6080604052612710600c55667c585087238000600d556001600f60006101000a81548160ff0219169083151502179055503480156200003d57600080fd5b506040518060400160405280601681526020017f44727567207265636569707473207765617261626c65000000000000000000008152506040518060400160405280600481526020017f44527857000000000000000000000000000000000000000000000000000000008152508160029081620000bb91906200048f565b508060039081620000cd91906200048f565b50620000de6200014260201b60201c565b600081905550505060016008819055506200010e620001026200014760201b60201c565b6200014f60201b60201c565b6000600f60016101000a81548160ff0219169083600481111562000137576200013662000576565b5b0217905550620005a5565b600090565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200029757607f821691505b602082108103620002ad57620002ac6200024f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002d8565b620003238683620002d8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003706200036a62000364846200033b565b62000345565b6200033b565b9050919050565b6000819050919050565b6200038c836200034f565b620003a46200039b8262000377565b848454620002e5565b825550505050565b600090565b620003bb620003ac565b620003c881848462000381565b505050565b5b81811015620003f057620003e4600082620003b1565b600181019050620003ce565b5050565b601f8211156200043f576200040981620002b3565b6200041484620002c8565b8101602085101562000424578190505b6200043c6200043385620002c8565b830182620003cd565b50505b505050565b600082821c905092915050565b6000620004646000198460080262000444565b1980831691505092915050565b60006200047f838362000451565b9150826002028217905092915050565b6200049a8262000215565b67ffffffffffffffff811115620004b657620004b562000220565b5b620004c282546200027e565b620004cf828285620003f4565b600060209050601f831160018114620005075760008415620004f2578287015190505b620004fe858262000471565b8655506200056e565b601f1984166200051786620002b3565b60005b8281101562000541578489015182556001820191506020850194506020810190506200051a565b868310156200056157848901516200055d601f89168262000451565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b61439580620005b56000396000f3fe60806040526004361061023b5760003560e01c8063896d51721161012e578063b91f3ebb116100ab578063e0df5b6f1161006f578063e0df5b6f1461077e578063e8d1ebaf146107a7578063e985e9c5146107c3578063f2fde38b14610800578063fa09e630146108295761023b565b8063b91f3ebb146106bd578063c1ca8287146106d4578063c87b56dd146106eb578063d547cfb714610728578063df4c2164146107535761023b565b8063a22cb465116100f2578063a22cb4651461060f578063a905821a14610638578063ac0dceab14610661578063b0384ea11461068a578063b88d4fde146106a15761023b565b8063896d5172146105505780638da5cb5b1461057957806391b7f5ed146105a457806395d89b41146105cd5780639f0568e6146105f85761023b565b806332cb6b0c116101bc5780636f8b44b0116101805780636f8b44b01461049357806370a08231146104bc578063715018a6146104f95780637cb6475914610510578063827c32f3146105395761023b565b806332cb6b0c146103cf57806342842e0e146103fa57806342d5b8e01461041657806347462cc81461042d5780636352211e146104565761023b565b806318160ddd1161020357806318160ddd1461031d57806323af88271461034857806323b872dd1461035f5780632eb4a7ab1461037b57806331e4737b146103a65761023b565b806301ffc9a71461024057806306fdde031461027d578063081812fc146102a8578063095ea7b3146102e557806316afebe514610301575b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190612b64565b610852565b6040516102749190612bac565b60405180910390f35b34801561028957600080fd5b506102926108e4565b60405161029f9190612c57565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612caf565b610976565b6040516102dc9190612d1d565b60405180910390f35b6102ff60048036038101906102fa9190612d64565b6109f5565b005b61031b60048036038101906103169190612f39565b610b39565b005b34801561032957600080fd5b50610332610f2e565b60405161033f9190612fd8565b60405180910390f35b34801561035457600080fd5b5061035d610f45565b005b61037960048036038101906103749190612ff3565b610f7a565b005b34801561038757600080fd5b5061039061129c565b60405161039d919061305f565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061307a565b6112a2565b005b3480156103db57600080fd5b506103e46112f4565b6040516103f19190612fd8565b60405180910390f35b610414600480360381019061040f9190612ff3565b6112fa565b005b34801561042257600080fd5b5061042b61131a565b005b34801561043957600080fd5b50610454600480360381019061044f91906130e9565b61134f565b005b34801561046257600080fd5b5061047d60048036038101906104789190612caf565b611488565b60405161048a9190612d1d565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612caf565b61149a565b005b3480156104c857600080fd5b506104e360048036038101906104de9190613158565b6114ac565b6040516104f09190612fd8565b60405180910390f35b34801561050557600080fd5b5061050e611564565b005b34801561051c57600080fd5b50610537600480360381019061053291906131b1565b611578565b005b34801561054557600080fd5b5061054e61158a565b005b34801561055c57600080fd5b5061057760048036038101906105729190613158565b6115bf565b005b34801561058557600080fd5b5061058e61160b565b60405161059b9190612d1d565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190612caf565b611635565b005b3480156105d957600080fd5b506105e2611647565b6040516105ef9190612c57565b60405180910390f35b34801561060457600080fd5b5061060d6116d9565b005b34801561061b57600080fd5b506106366004803603810190610631919061320a565b61170e565b005b34801561064457600080fd5b5061065f600480360381019061065a9190613288565b611819565b005b34801561066d57600080fd5b50610688600480360381019061068391906133ce565b6118d7565b005b34801561069657600080fd5b5061069f6119d7565b005b6106bb60048036038101906106b6919061351b565b611a0c565b005b3480156106c957600080fd5b506106d2611a7f565b005b3480156106e057600080fd5b506106e9611aa4565b005b3480156106f757600080fd5b50610712600480360381019061070d9190612caf565b611ac9565b60405161071f9190612c57565b60405180910390f35b34801561073457600080fd5b5061073d611b03565b60405161074a9190612c57565b60405180910390f35b34801561075f57600080fd5b50610768611b95565b6040516107759190612d1d565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a0919061359e565b611bbb565b005b6107c160048036038101906107bc91906135e7565b611bd6565b005b3480156107cf57600080fd5b506107ea60048036038101906107e59190613643565b611f10565b6040516107f79190612bac565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613158565b611fa4565b005b34801561083557600080fd5b50610850600480360381019061084b9190613158565b612027565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108ad57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108dd5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546108f3906136b2565b80601f016020809104026020016040519081016040528092919081815260200182805461091f906136b2565b801561096c5780601f106109415761010080835404028352916020019161096c565b820191906000526020600020905b81548152906001019060200180831161094f57829003601f168201915b5050505050905090565b60006109818261207f565b6109b7576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a0082611488565b90508073ffffffffffffffffffffffffffffffffffffffff16610a216120de565b73ffffffffffffffffffffffffffffffffffffffff1614610a8457610a4d81610a486120de565b611f10565b610a83576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610b416120e6565b600c5484610b4d610f2e565b610b579190613712565b1115610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906137b8565b60405180910390fd5b60026004811115610bac57610bab6137d8565b5b600f60019054906101000a900460ff166004811115610bce57610bcd6137d8565b5b14610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0590613853565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c73906138bf565b60405180910390fd5b600d5484610c8a91906138df565b341015610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc39061396d565b60405180910390fd5b610cd533612135565b15610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c906139ff565b60405180910390fd5b600015156010600043815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db090613a6b565b60405180910390fd5b60016010600043815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600033604051602001610e359190613ad3565b604051602081830303815290604052805190602001209050610e9b838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600e5483612158565b610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed190613b3a565b60405180910390fd5b610ee4338661216f565b7f76d561a4b8dadcdd199f5cc6472c5f442eb49b33a530632e4c5c91cdb4c8d2b6338686604051610f1793929190613b5a565b60405180910390a150610f2861218d565b50505050565b6000610f38612197565b6001546000540303905090565b610f4d61219c565b6000600f60016101000a81548160ff02191690836004811115610f7357610f726137d8565b5b0217905550565b6000610f858261221a565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fec576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ff8846122e6565b9150915061100e81876110096120de565b61230d565b61105a576110238661101e6120de565b611f10565b611059576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110c0576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110cd8686866001612351565b80156110d857600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506111a685611182888887612357565b7c02000000000000000000000000000000000000000000000000000000001761237f565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084160361122c576000600185019050600060046000838152602001908152602001600020540361122a576000548114611229578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461129486868660016123aa565b505050505050565b600e5481565b6112aa61219c565b6112b4838361216f565b7f76d561a4b8dadcdd199f5cc6472c5f442eb49b33a530632e4c5c91cdb4c8d2b68383836040516112e793929190613b5a565b60405180910390a1505050565b600c5481565b61131583838360405180602001604052806000815250611a0c565b505050565b61132261219c565b6001600f60016101000a81548160ff02191690836004811115611348576113476137d8565b5b0217905550565b6113576120e6565b600f60009054906101000a900460ff166113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d90613be4565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d90613c50565b60405180910390fd5b611440828461216f565b7f76d561a4b8dadcdd199f5cc6472c5f442eb49b33a530632e4c5c91cdb4c8d2b682848360405161147393929190613b5a565b60405180910390a161148361218d565b505050565b60006114938261221a565b9050919050565b6114a261219c565b80600c8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611513576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61156c61219c565b61157660006123b0565b565b61158061219c565b80600e8190555050565b61159261219c565b6002600f60016101000a81548160ff021916908360048111156115b8576115b76137d8565b5b0217905550565b6115c761219c565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61163d61219c565b80600d8190555050565b606060038054611656906136b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611682906136b2565b80156116cf5780601f106116a4576101008083540402835291602001916116cf565b820191906000526020600020905b8154815290600101906020018083116116b257829003601f168201915b5050505050905090565b6116e161219c565b6003600f60016101000a81548160ff02191690836004811115611707576117066137d8565b5b0217905550565b806007600061171b6120de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166117c86120de565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161180d9190612bac565b60405180910390a35050565b61182161219c565b600047905060008273ffffffffffffffffffffffffffffffffffffffff168260405161184c90613ca1565b60006040518083038185875af1925050503d8060008114611889576040519150601f19603f3d011682016040523d82523d6000602084013e61188e565b606091505b50509050806118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613d02565b60405180910390fd5b505050565b6118df61219c565b60005b848490508160ff1610156119d05761194185858360ff1681811061190957611908613d22565b5b905060200201602081019061191e9190613158565b848360ff168151811061193457611933613d22565b5b602002602001015161216f565b7f76d561a4b8dadcdd199f5cc6472c5f442eb49b33a530632e4c5c91cdb4c8d2b685858360ff1681811061197857611977613d22565b5b905060200201602081019061198d9190613158565b848360ff16815181106119a3576119a2613d22565b5b6020026020010151846040516119bb93929190613b5a565b60405180910390a180806001019150506118e2565b5050505050565b6119df61219c565b6004600f60016101000a81548160ff02191690836004811115611a0557611a046137d8565b5b0217905550565b611a17848484610f7a565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611a7957611a4284848484612476565b611a78576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611a8761219c565b6001600f60006101000a81548160ff021916908315150217905550565b611aac61219c565b6000600f60006101000a81548160ff021916908315150217905550565b6060611ad3611b03565b611adc836125c6565b604051602001611aed929190613d8d565b6040516020818303038152906040529050919050565b6060600a8054611b12906136b2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b3e906136b2565b8015611b8b5780601f10611b6057610100808354040283529160200191611b8b565b820191906000526020600020905b815481529060010190602001808311611b6e57829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bc361219c565b80600a9081611bd29190613f5d565b5050565b611bde6120e6565b600c5482611bea610f2e565b611bf49190613712565b1115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c906137b8565b60405180910390fd5b60016004811115611c4957611c486137d8565b5b600f60019054906101000a900460ff166004811115611c6b57611c6a6137d8565b5b14611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca29061407b565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d10906138bf565b60405180910390fd5b600d5482611d2791906138df565b341015611d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d609061396d565b60405180910390fd5b611d7233612135565b15611db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da9906139ff565b60405180910390fd5b600015156010600043815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4d90613a6b565b60405180910390fd5b60016010600043815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ec9338361216f565b7f76d561a4b8dadcdd199f5cc6472c5f442eb49b33a530632e4c5c91cdb4c8d2b6338383604051611efc93929190613b5a565b60405180910390a1611f0c61218d565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611fac61219c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361201b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120129061410d565b60405180910390fd5b612024816123b0565b50565b61202f61219c565b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561207a573d6000803e3d6000fd5b505050565b60008161208a612197565b11158015612099575060005482105b80156120d7575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60026008540361212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212290614179565b60405180910390fd5b6002600881905550565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000826121658584612694565b1490509392505050565b6121898282604051806020016040528060008152506126ea565b5050565b6001600881905550565b600090565b6121a4612787565b73ffffffffffffffffffffffffffffffffffffffff166121c261160b565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f906141e5565b60405180910390fd5b565b60008082905080612229612197565b116122af576000548110156122ae5760006004600083815260200190815260200160002054905060007c01000000000000000000000000000000000000000000000000000000008216036122ac575b600081036122a2576004600083600190039350838152602001908152602001600020549050612278565b80925050506122e1565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861236e86868461278f565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261249c6120de565b8786866040518563ffffffff1660e01b81526004016124be949392919061425a565b6020604051808303816000875af19250505080156124fa57506040513d601f19601f820116820180604052508101906124f791906142bb565b60015b612573573d806000811461252a576040519150601f19603f3d011682016040523d82523d6000602084013e61252f565b606091505b50600081510361256b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600060016125d584612798565b01905060008167ffffffffffffffff8111156125f4576125f3612dae565b5b6040519080825280601f01601f1916602001820160405280156126265781602001600182028036833780820191505090505b509050600082602001820190505b600115612689578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161267d5761267c6142e8565b5b04945060008503612634575b819350505050919050565b60008082905060005b84518110156126df576126ca828683815181106126bd576126bc613d22565b5b60200260200101516128eb565b915080806126d790614317565b91505061269d565b508091505092915050565b6126f48383612916565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461278257600080549050600083820390505b6127346000868380600101945086612476565b61276a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061272157816000541461277f57600080fd5b50505b505050565b600033905090565b60009392505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106127f6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816127ec576127eb6142e8565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612833576d04ee2d6d415b85acef81000000008381612829576128286142e8565b5b0492506020810190505b662386f26fc10000831061286257662386f26fc100008381612858576128576142e8565b5b0492506010810190505b6305f5e100831061288b576305f5e1008381612881576128806142e8565b5b0492506008810190505b61271083106128b05761271083816128a6576128a56142e8565b5b0492506004810190505b606483106128d357606483816128c9576128c86142e8565b5b0492506002810190505b600a83106128e2576001810190505b80915050919050565b6000818310612903576128fe8284612ad1565b61290e565b61290d8383612ad1565b5b905092915050565b60008054905060008203612956576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129636000848385612351565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506129da836129cb6000866000612357565b6129d485612ae8565b1761237f565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114612a7b57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612a40565b5060008203612ab6576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050612acc60008483856123aa565b505050565b600082600052816020526040600020905092915050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612b4181612b0c565b8114612b4c57600080fd5b50565b600081359050612b5e81612b38565b92915050565b600060208284031215612b7a57612b79612b02565b5b6000612b8884828501612b4f565b91505092915050565b60008115159050919050565b612ba681612b91565b82525050565b6000602082019050612bc16000830184612b9d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c01578082015181840152602081019050612be6565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c2982612bc7565b612c338185612bd2565b9350612c43818560208601612be3565b612c4c81612c0d565b840191505092915050565b60006020820190508181036000830152612c718184612c1e565b905092915050565b6000819050919050565b612c8c81612c79565b8114612c9757600080fd5b50565b600081359050612ca981612c83565b92915050565b600060208284031215612cc557612cc4612b02565b5b6000612cd384828501612c9a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0782612cdc565b9050919050565b612d1781612cfc565b82525050565b6000602082019050612d326000830184612d0e565b92915050565b612d4181612cfc565b8114612d4c57600080fd5b50565b600081359050612d5e81612d38565b92915050565b60008060408385031215612d7b57612d7a612b02565b5b6000612d8985828601612d4f565b9250506020612d9a85828601612c9a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612de682612c0d565b810181811067ffffffffffffffff82111715612e0557612e04612dae565b5b80604052505050565b6000612e18612af8565b9050612e248282612ddd565b919050565b600067ffffffffffffffff821115612e4457612e43612dae565b5b612e4d82612c0d565b9050602081019050919050565b82818337600083830152505050565b6000612e7c612e7784612e29565b612e0e565b905082815260208101848484011115612e9857612e97612da9565b5b612ea3848285612e5a565b509392505050565b600082601f830112612ec057612ebf612da4565b5b8135612ed0848260208601612e69565b91505092915050565b600080fd5b600080fd5b60008083601f840112612ef957612ef8612da4565b5b8235905067ffffffffffffffff811115612f1657612f15612ed9565b5b602083019150836020820283011115612f3257612f31612ede565b5b9250929050565b60008060008060608587031215612f5357612f52612b02565b5b6000612f6187828801612c9a565b945050602085013567ffffffffffffffff811115612f8257612f81612b07565b5b612f8e87828801612eab565b935050604085013567ffffffffffffffff811115612faf57612fae612b07565b5b612fbb87828801612ee3565b925092505092959194509250565b612fd281612c79565b82525050565b6000602082019050612fed6000830184612fc9565b92915050565b60008060006060848603121561300c5761300b612b02565b5b600061301a86828701612d4f565b935050602061302b86828701612d4f565b925050604061303c86828701612c9a565b9150509250925092565b6000819050919050565b61305981613046565b82525050565b60006020820190506130746000830184613050565b92915050565b60008060006060848603121561309357613092612b02565b5b60006130a186828701612d4f565b93505060206130b286828701612c9a565b925050604084013567ffffffffffffffff8111156130d3576130d2612b07565b5b6130df86828701612eab565b9150509250925092565b60008060006060848603121561310257613101612b02565b5b600061311086828701612c9a565b935050602061312186828701612d4f565b925050604084013567ffffffffffffffff81111561314257613141612b07565b5b61314e86828701612eab565b9150509250925092565b60006020828403121561316e5761316d612b02565b5b600061317c84828501612d4f565b91505092915050565b61318e81613046565b811461319957600080fd5b50565b6000813590506131ab81613185565b92915050565b6000602082840312156131c7576131c6612b02565b5b60006131d58482850161319c565b91505092915050565b6131e781612b91565b81146131f257600080fd5b50565b600081359050613204816131de565b92915050565b6000806040838503121561322157613220612b02565b5b600061322f85828601612d4f565b9250506020613240858286016131f5565b9150509250929050565b600061325582612cdc565b9050919050565b6132658161324a565b811461327057600080fd5b50565b6000813590506132828161325c565b92915050565b60006020828403121561329e5761329d612b02565b5b60006132ac84828501613273565b91505092915050565b60008083601f8401126132cb576132ca612da4565b5b8235905067ffffffffffffffff8111156132e8576132e7612ed9565b5b60208301915083602082028301111561330457613303612ede565b5b9250929050565b600067ffffffffffffffff82111561332657613325612dae565b5b602082029050602081019050919050565b600061334a6133458461330b565b612e0e565b9050808382526020820190506020840283018581111561336d5761336c612ede565b5b835b8181101561339657806133828882612c9a565b84526020840193505060208101905061336f565b5050509392505050565b600082601f8301126133b5576133b4612da4565b5b81356133c5848260208601613337565b91505092915050565b600080600080606085870312156133e8576133e7612b02565b5b600085013567ffffffffffffffff81111561340657613405612b07565b5b613412878288016132b5565b9450945050602085013567ffffffffffffffff81111561343557613434612b07565b5b613441878288016133a0565b925050604085013567ffffffffffffffff81111561346257613461612b07565b5b61346e87828801612eab565b91505092959194509250565b600067ffffffffffffffff82111561349557613494612dae565b5b61349e82612c0d565b9050602081019050919050565b60006134be6134b98461347a565b612e0e565b9050828152602081018484840111156134da576134d9612da9565b5b6134e5848285612e5a565b509392505050565b600082601f83011261350257613501612da4565b5b81356135128482602086016134ab565b91505092915050565b6000806000806080858703121561353557613534612b02565b5b600061354387828801612d4f565b945050602061355487828801612d4f565b935050604061356587828801612c9a565b925050606085013567ffffffffffffffff81111561358657613585612b07565b5b613592878288016134ed565b91505092959194509250565b6000602082840312156135b4576135b3612b02565b5b600082013567ffffffffffffffff8111156135d2576135d1612b07565b5b6135de84828501612eab565b91505092915050565b600080604083850312156135fe576135fd612b02565b5b600061360c85828601612c9a565b925050602083013567ffffffffffffffff81111561362d5761362c612b07565b5b61363985828601612eab565b9150509250929050565b6000806040838503121561365a57613659612b02565b5b600061366885828601612d4f565b925050602061367985828601612d4f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136ca57607f821691505b6020821081036136dd576136dc613683565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061371d82612c79565b915061372883612c79565b92508282019050808211156137405761373f6136e3565b5b92915050565b7f616d6f756e742073686f756c64206e6f7420657863656564206d61782073757060008201527f706c790000000000000000000000000000000000000000000000000000000000602082015250565b60006137a2602383612bd2565b91506137ad82613746565b604082019050919050565b600060208201905081810360008301526137d181613795565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f6d696e74206973206e6f74206163746976650000000000000000000000000000600082015250565b600061383d601283612bd2565b915061384882613807565b602082019050919050565b6000602082019050818103600083015261386c81613830565b9050919050565b7f6d696e742066726f6d20636f6e7472616374206e6f7420616c6c6f7765640000600082015250565b60006138a9601e83612bd2565b91506138b482613873565b602082019050919050565b600060208201905081810360008301526138d88161389c565b9050919050565b60006138ea82612c79565b91506138f583612c79565b925082820261390381612c79565b9150828204841483151761391a576139196136e3565b5b5092915050565b7f65746865722076616c75652073656e7420697320696e636f7272656374000000600082015250565b6000613957601d83612bd2565b915061396282613921565b602082019050919050565b600060208201905081810360008301526139868161394a565b9050919050565b7f636f6e74726163747320617265206e6f7420616c6c6f77656420746f206d696e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006139e9602183612bd2565b91506139f48261398d565b604082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f616c7265616479206d696e74656420696e207468697320626c6f636b00000000600082015250565b6000613a55601c83612bd2565b9150613a6082613a1f565b602082019050919050565b60006020820190508181036000830152613a8481613a48565b9050919050565b60008160601b9050919050565b6000613aa382613a8b565b9050919050565b6000613ab582613a98565b9050919050565b613acd613ac882612cfc565b613aaa565b82525050565b6000613adf8284613abc565b60148201915081905092915050565b7f496e76616c69642070726f6f662e000000000000000000000000000000000000600082015250565b6000613b24600e83612bd2565b9150613b2f82613aee565b602082019050919050565b60006020820190508181036000830152613b5381613b17565b9050919050565b6000606082019050613b6f6000830186612d0e565b613b7c6020830185612fc9565b8181036040830152613b8e8184612c1e565b9050949350505050565b7f4e6f7420656e61626c6520746f2072657665616c20612063617073756c650000600082015250565b6000613bce601e83612bd2565b9150613bd982613b98565b602082019050919050565b60006020820190508181036000830152613bfd81613bc1565b9050919050565b7f6e6f7420616c6c6f77656420746f206d696e7400000000000000000000000000600082015250565b6000613c3a601383612bd2565b9150613c4582613c04565b602082019050919050565b60006020820190508181036000830152613c6981613c2d565b9050919050565b600081905092915050565b50565b6000613c8b600083613c70565b9150613c9682613c7b565b600082019050919050565b6000613cac82613c7e565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b6000613cec601483612bd2565b9150613cf782613cb6565b602082019050919050565b60006020820190508181036000830152613d1b81613cdf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b6000613d6782612bc7565b613d718185613d51565b9350613d81818560208601612be3565b80840191505092915050565b6000613d998285613d5c565b9150613da58284613d5c565b91508190509392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613e137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613dd6565b613e1d8683613dd6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613e5a613e55613e5084612c79565b613e35565b612c79565b9050919050565b6000819050919050565b613e7483613e3f565b613e88613e8082613e61565b848454613de3565b825550505050565b600090565b613e9d613e90565b613ea8818484613e6b565b505050565b5b81811015613ecc57613ec1600082613e95565b600181019050613eae565b5050565b601f821115613f1157613ee281613db1565b613eeb84613dc6565b81016020851015613efa578190505b613f0e613f0685613dc6565b830182613ead565b50505b505050565b600082821c905092915050565b6000613f3460001984600802613f16565b1980831691505092915050565b6000613f4d8383613f23565b9150826002028217905092915050565b613f6682612bc7565b67ffffffffffffffff811115613f7f57613f7e612dae565b5b613f8982546136b2565b613f94828285613ed0565b600060209050601f831160018114613fc75760008415613fb5578287015190505b613fbf8582613f41565b865550614027565b601f198416613fd586613db1565b60005b82811015613ffd57848901518255600182019150602085019450602081019050613fd8565b8683101561401a5784890151614016601f891682613f23565b8355505b6001600288020188555050505b505050505050565b7f73616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b6000614065601283612bd2565b91506140708261402f565b602082019050919050565b6000602082019050818103600083015261409481614058565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140f7602683612bd2565b91506141028261409b565b604082019050919050565b60006020820190508181036000830152614126816140ea565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614163601f83612bd2565b915061416e8261412d565b602082019050919050565b6000602082019050818103600083015261419281614156565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006141cf602083612bd2565b91506141da82614199565b602082019050919050565b600060208201905081810360008301526141fe816141c2565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061422c82614205565b6142368185614210565b9350614246818560208601612be3565b61424f81612c0d565b840191505092915050565b600060808201905061426f6000830187612d0e565b61427c6020830186612d0e565b6142896040830185612fc9565b818103606083015261429b8184614221565b905095945050505050565b6000815190506142b581612b38565b92915050565b6000602082840312156142d1576142d0612b02565b5b60006142df848285016142a6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432282612c79565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614354576143536136e3565b5b60018201905091905056fea264697066735822122087adcce5eabdf71641c47c0c6e5034bd933cb7e6f0785c139d0837425491f30864736f6c63430008120033