Source Code

;; Used to simulate mainnet migration from v1 to v2 in the test suite
;; Must be called after deploying migrate-v0-v1.clar

(define-data-var executed bool false)
(define-data-var executed-burn-mint bool false)
(define-data-var executed-reserve-data-update bool false)
(define-data-var executed-borrower-block-height bool false)

(define-data-var enabled bool true)
(define-constant deployer tx-sender)

;; TODO: to fetch off-chain
(define-constant borrowers (list
 { borrower: 'SP2EZBRH2T5A4TPFFTDK48CHR0WG95YZZA4HC1TJE, new-height: u199229 }
 { borrower: 'SP17E0MR87HGBEXG11EXVVVSKBENW60YRKJ7XCJ5W, new-height: u167445 }
 { borrower: 'SP1BCG1NS7VTHSD12EFKMCTQTG4X2CXVR40J4PZS2, new-height: u153046 }
 { borrower: 'SP3K8C7XMJ3NJ5SCW35580Q7E8J5BZYDSWF9DHZRH, new-height: u153654 }
 { borrower: 'SPPSGTT8H6JTWM3V2JGPSSFZEXE95XTSF160E2E0, new-height: u167174 }
 { borrower: 'SP1QB148EP9VA61KTBCTJKWG97KGV2B5P39ADBVAG, new-height: u171031 }
 { borrower: 'SP1PY1MDQ6CEPSADB9B5T46ZDV3S3R2832RMRQSEP, new-height: u153224 }
 { borrower: 'SP2V4V1T2H7JEJ6GCVSS0CWSPADH7VYPJNH8FHWRZ, new-height: u302540 }
 { borrower: 'SP22SM689EZH0AYPTF4W4WYGEKWY9TV83RD1HQ1KG, new-height: u156904 }
 { borrower: 'SP1XMET9WA004YFG6MCVVZX059KCH50DXA2JENF2J, new-height: u160849 }
 { borrower: 'SP2Z6K2G6E08399JKV48N9WJBWPQBES3ZZDH4FFHW, new-height: u153878 }
 { borrower: 'SP142SYE5MZ1E1WYV6DMZXDFN9WC643PRNNGVND2Q, new-height: u168909 }
 { borrower: 'SPXH4RFHRWC6FGGSZ64M3EFVY6XBS8VR8ATTXAV7, new-height: u153174 }
 { borrower: 'SP2FY8MV3EZVRTG2Q9J1KMMRVKC86DQ00BGGCQJXQ, new-height: u163201 }
 { borrower: 'SPS1BZ7XDEP906VS8FGF13YV47AA4HZDTM1MT3C8, new-height: u170955 }
 { borrower: 'SP1S1ZPFABXAQBF2JNZ0NGF0KWDXJJAE8AFNJM568, new-height: u153044 }
 { borrower: 'SP1222YJD8VC4TQB26MCYSM25SAE44ZBYRZYDBSDB, new-height: u302884 }
 { borrower: 'SP3G98P3GKB3XCN5X014A4EEVQ6Y8RNF2NGE2JXH5, new-height: u152934 }
 { borrower: 'SP2NVGWMJSAAEPZNNQRHW626HBA4Q325FHX7VVPF3, new-height: u171031 }
 { borrower: 'SP1PY22WG0EV9NNGEH6JD4YPD472RENR073R6C2N3, new-height: u171031 }
 { borrower: 'SPC9YQ34Q1XCCC7XPRZ5CB2XF22JV3WNM7BMMARD, new-height: u156382 }
 { borrower: 'SPVTZAMM0MM4WMZC6RFKF6XZTXV8HPKP3NWR4MGG, new-height: u153215 }
 { borrower: 'SP1VKEVK39KZTA7T95XTYX3ACXBSDBDQC3HECH4QA, new-height: u162613 }
 { borrower: 'SP13FPEN3GP72HCFC7R0306DJFCN15G7E3CXWZDJ6, new-height: u160996 }
 { borrower: 'SPMYAJ5346DV29VMQPH8JWQWGK3VT0KNXZSAGEX9, new-height: u168670 }
 { borrower: 'SP3WAAYXPC6WZNEC7SHGR36D32RJPZVXRR1BG0QSY, new-height: u181453 }
 { borrower: 'SP1N973K3V574VJ86KM95HFCT1T0V1VCQPDADRGMS, new-height: u181591 }
 { borrower: 'SP3NNTSWS5DPF9P1AND76KH0MK9MXF51N6EDTSJ1K, new-height: u153878 }
 { borrower: 'SP11K4RMT2MVYQD17JWGPZRK2EG0RW7C876BCA662, new-height: u153189 }
 { borrower: 'SP1RGW2YQ6W5J8KCTY0MC30AHVX1XE7GS9A6YM73, new-height: u314916 }
 { borrower: 'SP1TXD2F8BKQJSYWNSBVR6CCJF6HB52HVP318FXT6, new-height: u153942 }
 { borrower: 'SP1AQGDVHGD26NGP5SGVZ85NP6RGPE8DZ57CES1D1, new-height: u152825 }
 { borrower: 'SPEFCW4DY382E1YGJFZD4DQARNWASE5CT9P3V6YV, new-height: u156468 }
 { borrower: 'SP38142W7333X0Y8CQ3WN6R91S7F63SVRDN5QB0SS, new-height: u160754 }
 { borrower: 'SP1CDNKMQ473VC0TSKTDWZ2AC6CF4Q2E7Q2FFFG9J, new-height: u217521 }
 { borrower: 'SP1ECQJPTA9RREM5RR2TMFPDCE57GX58TR2S86KRT, new-height: u152327 }
 { borrower: 'SPRZXS220A70095JQXMHPT517BGSC9DZXRYF1EHR, new-height: u160534 }
 { borrower: 'SP27A5RMDF3CBPAW2FT361D5MDGFKBQNV63691K3B, new-height: u293304 }
 { borrower: 'SP3XQMANKR51TFB1WZZYBZ5M40A2CFK9P67BAQ7EE, new-height: u154563 }
 { borrower: 'SPZFJ8KVF9N4G2PY2DBHH9CC8JW3VRTJM0ARZQB7, new-height: u160721 }
 { borrower: 'SP25MNFEVN07ADBB3GP2T4DZ6958N89G58EN493GQ, new-height: u160721 }
 { borrower: 'SP3ATFW5VSD0W4N0E3K1E4CGFE8MJXQ9XFFMQ0HBY, new-height: u345385 }
 { borrower: 'SPC37JHRY1C06JN1QRFZ6EV4F8FZ5XNEGKHMRM2F, new-height: u160483 }
 { borrower: 'SP2SHSJGH8WSSWQ7EQYMB1NV1NDXWRVQ9AFWQVP31, new-height: u160144 }
 { borrower: 'SP35R4DXWZRPMPTSNK0FFW714H9HPWH3R35Z4GVJC, new-height: u160439 }
 { borrower: 'SP2Y743CNBQ5RW3A323C338HD1DVK04CSBKMECQ1Y, new-height: u160389 }
 { borrower: 'SP2H6B6ST4AD8263JE6XQTD827FMP2R7KTT3FYYBN, new-height: u200069 }
 { borrower: 'SP34SYKT08GSP4ECNRWR7B3QWWS6WX7PN5YZHQ95F, new-height: u166314 }
 { borrower: 'SPQRCD92VZPXMXHC7XTB2S6PC8X3NQVM6AXB4RDB, new-height: u167663 }
 { borrower: 'SP1ES0J06MWHJ0VS0MH1XWJR3V3Z64A1HWF0BQ6MA, new-height: u197796 }
 { borrower: 'SP255R4NT3VXHGHHQP4A6YZK0RKA20ZXRRHDFYG1X, new-height: u200103 }
 { borrower: 'SP1CQXF17BARCXH5FVWJ9RT84PE7SNCNNF4PTTYW6, new-height: u167663 }
 { borrower: 'SPH6N76R4RP42CWNZPSYFEH98106PH4RJYBMHW8K, new-height: u159786 }
 { borrower: 'SP3JDJMDBAXK1PMP4TJXZJ8HVYK09393QG2WKN8QV, new-height: u200069 }
 { borrower: 'SPTG81TWDYWPTRZHFPW6XG2BZ1VCV7B70BXRG68N, new-height: u167663 }
 { borrower: 'SP1HPF7C3ZA0EX63N48RQKVMNX9N988C7DWWTC95W, new-height: u160056 }
 { borrower: 'SP14HZGZN7BNV3PVSY201PCYRQDH1TDKFY1GPM4JN, new-height: u200069 }
 { borrower: 'SP1XVFZJJ48Y5586BTDWE22MXFDCYZKCDRWY6T0AA, new-height: u155639 }
 { borrower: 'SP2V9YWEMB3F66N931V8RR7MS48KEMES2BC6A107C, new-height: u200087 }
 { borrower: 'SP2ZVGMDY610RK5CJHR8YN0PR47X93VK66B91GP1J, new-height: u167663 }
 { borrower: 'SP3CPVVMJ3VSECMWY2N7E28QE9YKS2TZ1516WQBBW, new-height: u200100 }
 { borrower: 'SP1QJND5B1AKD62WJXWBZQ3Y3B0075A8W53GACZSE, new-height: u203233 }
 { borrower: 'SP2DXQY1G61WJZW81V457RB9398JDV1Q9DFZAEEEQ, new-height: u160059 }
 { borrower: 'SP2M52RZ429VAJDZ5GATQA7RVTHDYNAA68HEGHSKB, new-height: u170043 }
 { borrower: 'SP1VCW4ZJWQS58DWR0SCM08ZNENQHD4XD0Z0MPGX5, new-height: u159845 }
 { borrower: 'SPWY0ETYESNCH73RMVRGS2PQWT6SRGCA5CTEB4FG, new-height: u203233 }
 { borrower: 'SP19KC16DDY7AN0HD05ZXT91Z3007TERPDC5HGBAS, new-height: u164695 }
 { borrower: 'SP3AKBP5TXJ4BKTEN7P6JH5AHAJ2Q7ZAXN51R8PNQ, new-height: u159492 }
 { borrower: 'SP1Y00VHFYP7EXB6RW6P65Q8NXY1XGY9VCMKTF821, new-height: u159652 }
 { borrower: 'SPP573S6EBM2XS05ADMCB8E1C3EPWKSKQKS1ANKJ, new-height: u159673 }
 { borrower: 'SP2AGHN926XTT6ADKVKEK49J30M78C396W7ECA3Q9, new-height: u159303 }
 { borrower: 'SP2BS1YY80GGWKA0PFHXWXH2NQHFTCZ600HDH8BR5, new-height: u159339 }
 { borrower: 'SP1WE7GH2Y5CVNTMXZESMNKVJ2W2YQZEAB3Q16JPP, new-height: u169541 }
 { borrower: 'SP12JM4Z7YFYZ8PMANHV0R1HCQNC4FGQSK95C9DE6, new-height: u159334 }
 { borrower: 'SP1WY102H26RKKV4WKHH3ZB9KGVBE925HP6PH3WE5, new-height: u258090 }
 { borrower: 'SP25CTYTHDRXY6WHR5MQB413VANTV48589EH0KGS2, new-height: u159292 }
 { borrower: 'SP1S9V348SY2H77AH4B008KX0K2GPW2EGEW29847M, new-height: u253278 }
 { borrower: 'SPP5F4NABAQ0H96Z1DVQG3KADTDVYD5FFDYBAFTR, new-height: u152448 }
 { borrower: 'SP2C9626NVF86VWFFND7HJ65DGEK5P84Y52RQ05CB, new-height: u160285 }
 { borrower: 'SP1MP1CXC5EPZJV2BPCWQK1W5B5AKQKWE764JZ3B5, new-height: u159129 }
 { borrower: 'SP2Y6PN1W5F97RZ2ENNSAADVWBFDF3GCVC4YZ71CN, new-height: u159268 }
 { borrower: 'SP38DK4JAY0NVH59QM21EBBNQWZPXB94K0FXK0JJ8, new-height: u152240 }
 { borrower: 'SP2PN3KB4SMAYG1D9Z79294ZB83NGKB453WSK18JC, new-height: u160227 }
 { borrower: 'SP3FZGQS4YTC87PSQGKY43RGSYX41APNM6VQ00SG5, new-height: u199686 }
 { borrower: 'SP18295NSWPNSHYF8CYQYVFAJTPM8855242MPBG96, new-height: u194285 }
 { borrower: 'SPQMJEWMB5ZZKNFNWDCN3P73KANTPDQAH9VDQFSQ, new-height: u202531 }
 { borrower: 'SPVAG9S48RWADXDBY2FTRDA88K1XEMER4BYN3976, new-height: u168110 }
 { borrower: 'SP3S1E5JH286HFJK10GQF87PAMFBVXW55HV0MYWN0, new-height: u159944 }
 { borrower: 'SP2EX6YKM52T7GMCTJ8E2CTGMPVB4YBTJE5R0QZY5, new-height: u171731 }
 { borrower: 'SP374R5R2C97XNGZ2JDJV5S86THA7MBWNZ0140KCV, new-height: u202531 }
 { borrower: 'SP2V9XG0W2YYFR25Q6MZACJTT4SE42JNJB1RDDXHN, new-height: u167654 }
 { borrower: 'SP18JYK86ZBZSZR8V4ZT0TXVAS2YXDN64JED02RDG, new-height: u158845 }
 { borrower: 'SP2YHQQXYD4N36MAEKC1AZ38BBQB3DQ9JKR5CSVPP, new-height: u168110 }
 { borrower: 'SP1Y0CP644NV3TTQM5VBWM137K1VC0BJQ13WXMADZ, new-height: u168177 }
 { borrower: 'SP2VE39M87CWWQZ82EX5Y4P8JMEH0PPXPPJC09N3W, new-height: u208130 }
 { borrower: 'SP108PFJNH8ZF0YNH8RDERYTZZW5B135RFYBKCHA3, new-height: u158539 }
 { borrower: 'SP2X34MVZGQRNBG7S5AT1S44XXA47WVEMTH98CQYN, new-height: u158659 }
 { borrower: 'SP3DX0AG3HJNFNTKZ4A64W1A579ETY1N2JN7WHTC1, new-height: u204591 }
 { borrower: 'SP11877TX1W8QQQH5BXJRD47Q5ZF4WMVP7NF0Y9K9, new-height: u204591 }
 { borrower: 'SP1E530A9WSDDKWGTV37BQXGX5PRJPQ951EYGK2HA, new-height: u208130 }
 { borrower: 'SP2QED6YW7H6VMSN95T8BNWF3V47HB0XYVS1K8B3F, new-height: u256900 }
 { borrower: 'SP1AX6S539HS5Y8XY9T7JRBY6B0HS0FV759X53G9P, new-height: u158707 }
 { borrower: 'SP1ZCA2YV8TGX1NCJ8K04P5WJSGJVM1XD44APZD9Q, new-height: u167451 }
 { borrower: 'SPH7P7209RYS3JTH0WA6JAYKME4HEJFNF0C9EEP6, new-height: u207825 }
 { borrower: 'SP37GN4JPWNNC8EQ956F6K76MCPVDXSRTWY4TK6A1, new-height: u209069 }
 { borrower: 'SP36FES4VZ0CRSSFASE7GPSDK2EZN65V39MEBQDHX, new-height: u208130 }
 { borrower: 'SPHR6AQM483RCN6RQZA82B21FWA2SDXXHBA9K99S, new-height: u204591 }
 { borrower: 'SP8DS6EEP9G6WJT96YVFRKQ6HSNKQDK22X71K0V1, new-height: u204591 }
 { borrower: 'SP1N40ZQFA80NN2CT7E81Q6GR9MYKDG749GVH8B93, new-height: u158677 }
 { borrower: 'SP17TK3BKFPQADD4Q1CTWSR5GC7GVFY7VE76NJTW5, new-height: u158678 }
 { borrower: 'SP3TFX7T0RG5T2QRFTNZXNN7GWRE9KV7YTW6TTBSS, new-height: u167659 }
 { borrower: 'SP3Q8DE0858VWF82Z8VHQMXD8RGR3120JG6XG81QP, new-height: u158699 }
 { borrower: 'SP3N3W86G5RGMFPW8ZE6SJJ18NYY92R54D1YT01X5, new-height: u199968 }
 { borrower: 'SP31XE07MFJ0R8XQAGBQFSX8YNGXQECPW4YETYN56, new-height: u208130 }
 { borrower: 'SP1WHA75KA89M4PHGXXNZMEFA7SKSFHTRKPYN7K5V, new-height: u167658 }
 { borrower: 'SPRGKWHWMD4XSZH9Q8F2JA6M9ZP1CV0PZXBJK11T, new-height: u208238 }
 { borrower: 'SPD0DN2RPMB6NG0SS6G56D0F9QKAVJ9M425TMZA6, new-height: u204591 }
 { borrower: 'SP1ZA0NPPJCSF57BZ7NB9K0SJ8G6PQX0F28N310V9, new-height: u158703 }
 { borrower: 'SPERRR7NT5KA3QQPGDR5RZZMJKPZRMRBGS445H4A, new-height: u208066 }
 { borrower: 'SP2VHDJG4HPW0B9T2RGZNRYPXK2K2BE5AECWNYWV3, new-height: u205598 }
 { borrower: 'SP3CDAQM3XB1EFY9QYK5VN7JERPN3ZF1Y4GXV3EN6, new-height: u207764 }
 { borrower: 'SP3CXJ7KKBY5Y53VM6STTSSVFT1PGGDQ4HN3RN42H, new-height: u159944 }
 { borrower: 'SP3WFW3G78JSYKFEYVTXJSBG9MYDG706DN00SR043, new-height: u160360 }
 { borrower: 'SP3DZWHXZF12MTW3WP8TN3KA5XH09TK8QNKC1SD9G, new-height: u204591 }
 { borrower: 'SP3ZW442AHT23SWB1NZ6QMKS17BQYWCTZS7371864, new-height: u208130 }
 { borrower: 'SP1VAKZQ2934G25VMRQEFE1065XEARPT3C2KXCWMW, new-height: u197708 }
 { borrower: 'SP26719B4034HGEH5BYKNVXXXDV9AT6J068JDFM2G, new-height: u204591 }
 { borrower: 'SP23Q62WKQ2476E6DPBX1DSA9027WY1G2Y7MW32FE, new-height: u158659 }
 { borrower: 'SP3QB90S58982H2ZQX5EXTEKKBJSPCTSVXKHDN644, new-height: u204591 }
 { borrower: 'SPSRQNN7GG7FJ9FFYW1MA9J9C7X5DVTNN225TAZF, new-height: u167658 }
 { borrower: 'SP3ZWCFRGEJ6AH9T15DXPQ5H804RWWK1RPGAE0K2X, new-height: u158622 }
 { borrower: 'SP3J0N2964S5X78JV21EGQHJWSMSZKZ9EABGM8TN6, new-height: u158678 }
 { borrower: 'SPEZZHE2H0ZV31A82NDNETNRJ5RD10GDXJ4BME4Z, new-height: u202531 }
 { borrower: 'SP1YCKGH91VHNXYF73MQQQW9F9KX0R8QFKPCNC63V, new-height: u158541 }
 { borrower: 'SP2YX1568ZQK8JBQNJ7947XCNNWAZGJYZFFBW5VWA, new-height: u211334 }
 { borrower: 'SPJG013EY7YRJRZZXBE6VBR5KJ5Q6ZNVTDSGHBJJ, new-height: u158490 }
 { borrower: 'SP34M6KFH1D9H3VJM1G7S1K057PVFCT3GNHRK5RN1, new-height: u211300 }
 { borrower: 'SP3YSPMQ7EANV6CTV0PEBNFJ8DAAZE8AGCS5VCQJB, new-height: u211300 }
 { borrower: 'SPN12B2XZYBS7KVQ8YNCWC0B3PJ7WWFGZJAP53AW, new-height: u164145 }
 { borrower: 'SP3VGGV866MC5EKKHWG7G8WZSER20VV1ETNHF8CWG, new-height: u158516 }
 { borrower: 'SP3S08PWPWHJVZQFKWSBM007Z553MVFCF44ZYMK70, new-height: u211300 }
 { borrower: 'SP3TAQCT0KQ1TC9E6XJ33J26XPG1DGSPS61M61H9G, new-height: u168499 }
 { borrower: 'SP341ME1ZVR2MP40246BTHBQJYZAYBSQPN980DTK1, new-height: u207837 }
 { borrower: 'SP167DH2FSHMVS3AXXJ50T48Y1VKDPYNTZGEXC6FW, new-height: u211300 }
 { borrower: 'SPZKJ0JYQJ7HPG43ZYA6520ZAD13ET55NZMNZ1ZE, new-height: u211334 }
 { borrower: 'SP2YDP13MXWC61FPAWSZASA49E43ZZA2P3G3M5P18, new-height: u211360 }
 { borrower: 'SP1G3FCHEZWNXGV9NZ7YG9R6Y168N9RW8HR4VTWTV, new-height: u158144 }
 { borrower: 'SP2FA1H3K9FMY2CQ80WWT2JYMHZ5Z2B810AT41APW, new-height: u296293 }
 { borrower: 'SP21WZ9DAQHMS9B3TX3VJ1D89EYP0RQXA34QPB69T, new-height: u195412 }
 { borrower: 'SP3ZTEQ37YPJFFR43MSG3S3BYKP98W93338F0AZ9S, new-height: u211360 }
 { borrower: 'SP3VR3GZ37ACP52FXQ10396BZS627QYYN94QGXV59, new-height: u211360 }
 { borrower: 'SPMTGRW374B5HYWNVHNQ69CDR5J81X0JZ8FG4981, new-height: u211300 }
 { borrower: 'SP2Z82QFEEVF9CM5QGQSVRTQRTCVDP9B8JHEPWARG, new-height: u211334 }
 { borrower: 'SP14WZEHZSP2JH861GT0CQ56YJR8JGTAA5RHYX2FX, new-height: u207837 }
 { borrower: 'SP1YMFYH8GJC31T4FDHS5R1R8PMDZRAGFFPKHFER7, new-height: u188994 }
 { borrower: 'SP1QA1QPK93XB83ZYXKR729ZX2Y9R4S80J8HV1WD6, new-height: u208341 }
 { borrower: 'SP2QZT3P5NZR2WG910S84B3YW3G6ES5WZ7Y9Z6B0R, new-height: u207837 }
 { borrower: 'SP19JJBMB7B5BZ8ZENAFREFWZ4YPDDBV1FDE07264, new-height: u211360 }
 { borrower: 'SP371PYZ83YNB7ZZN6EXSG2X46HWRXAY3PG6XFY5T, new-height: u211290 }
 { borrower: 'SP2JAWRXBJTETMYFRDMVT11NA4MN5DWDXX9928NY5, new-height: u191343 }
 { borrower: 'SP3250QSHSN8ZG2FZEX241Z08QYJ9KX56KQ29MRSY, new-height: u158047 }
 { borrower: 'SP1X54RCNJS8GYHQ7ENN11JTQV74BVX15C5QMN1A, new-height: u172006 }
 { borrower: 'SP3P1P13G798Q3JQW753QMR5DRN2SWGXRT7GEZKXX, new-height: u211360 }
 { borrower: 'SP3DPXHEAQ34YVNC7NADP1BSYXWSDTW9KW6PGTAM0, new-height: u169630 }
 { borrower: 'SP1JQHZ30YKZ0P0JWCN5G4PP21J9SXVNP2WQ13R5Q, new-height: u211300 }
 { borrower: 'SPMA0EH4FZGPA1FJBQXJREE22CBKYCBBVH8M55TV, new-height: u158432 }
 { borrower: 'SP2GR4FFCNZ5FATP98Y50Y3V3J2F1NKQ8AP9GBP0W, new-height: u211300 }
 { borrower: 'SPDVCHPD7HQKZETX2RQKMXXRK03PR5ATX9YNMS87, new-height: u166809 }
 { borrower: 'SP9V2WP3G21J3XZV5CRCEVWDQTG259739SX569AY, new-height: u208130 }
 { borrower: 'SP21PTW33GW7K884735R4SH96RPPWRE7VXHRFVQVE, new-height: u208130 }
 { borrower: 'SP11JS1MKCFR0GCZXTJW52B87QK0GZWA2C2VA2SY9, new-height: u207837 }
 { borrower: 'SPMCE93TRE1EJDMW5KZYNE50856J2R1SD7HAKM9X, new-height: u158538 }
 { borrower: 'SP17WCRVRXZ2WKQ4FVKJVFTSDYT9VRWC5GPSWZ7KE, new-height: u203190 }
 { borrower: 'SPYYGACE3AXA11168AT37Y9CV9V9SWKJA3R13D1H, new-height: u207860 }
 { borrower: 'SPGTK5GDQH0BCGZ5A39K34P7WZ5GY4TGNGH1RPPZ, new-height: u157533 }
 { borrower: 'SP2PNA3NH6WRFTVGF88TS89F3RYG801YPXPHWG3KF, new-height: u158138 }
 { borrower: 'SP2VDM89W60BBQQ5100JGBH5GZ5P0578AD6B8MB47, new-height: u157949 }
 { borrower: 'SP1031T8ER3VKTXDCEFVTB2SQEC7WJMXECAP4V59F, new-height: u165257 }
 { borrower: 'SP3ZWD38S48NFMKB61KCEHZVX198JTG2TV6XX7NP7, new-height: u157578 }
 { borrower: 'SP1A3C02M44YXV6NB049PSBE2V7PZ6MNMAK4Q9AZF, new-height: u300333 }
 { borrower: 'SP33K2SBGZMXC6H2CEV95GRKT9W4HGJ601TZWBF49, new-height: u162412 }
 { borrower: 'SP1JEP2M7SMMRNM4FRE64SK68B3XDK739CT8W8SAR, new-height: u165263 }
 { borrower: 'SPDYEST76G05NFJKPBGWXYF2X9BNDZKRRY1S61SN, new-height: u165263 }
 { borrower: 'SP3HJ7XSYGMF9JCTGGBEWZH7EVG63715XX1V0QSV2, new-height: u165263 }
 { borrower: 'SP2F48735BJJMJFSY9R05WCANKHZZDQ0PPK285GR5, new-height: u300333 }
 { borrower: 'SP95NXE5T10VAHPJPYN43Q3K9VG8GBNM0G1DRZDF, new-height: u157578 }
 { borrower: 'SP3JD29Z4QV1P7H7BQY0RSGQPHBT6A6KZFH1JK2PD, new-height: u157581 }
 { borrower: 'SP11HP6JWVH61F64RR39B33TYPG82VATXTFX20YSJ, new-height: u157113 }
 { borrower: 'SPR6RNTSP1TRMNXG17DHN7S2EVQ4AVDK9Y38MK88, new-height: u158407 }
 { borrower: 'SP21SZ259KJ62FPZKBAADCA7TXTTBXXEGRHC195KR, new-height: u165263 }
 { borrower: 'SP2P6ND86F2YG2GQDQD8QXZTE28EWYKS559D98H48, new-height: u157198 }
 { borrower: 'SP3TSJDJ55HVZM758W7T3M2GXE4VSRQEYGDZKFW4Z, new-height: u157027 }
 { borrower: 'SP3Y61HTFVK1DX11XZY0CAYHFXD89FCA6MXDJAJDK, new-height: u157027 }
 { borrower: 'SP37WSM3A5R82WZXWMQZZP375VBVC6W1QGSXDJ8TP, new-height: u157010 }
 { borrower: 'SP1NE7ZFNT8KBGTFX6BX1TCZ1QJMGAT2ERB0RK48T, new-height: u157028 }
 { borrower: 'SP163E8CNQYCPN060JVBTVTV6RR0QA4QDYRE84D44, new-height: u157008 }
 { borrower: 'SP1R9KP5R7GGM8THF6SAG875GBMAAY9S3SYF2W8N7, new-height: u157577 }
 { borrower: 'SP3V1S3K19A26Z87VK0BFA8A9CZMRBHA4TT8DC1PR, new-height: u157187 }
 { borrower: 'SP36H5MV2DCRKYBXAZYZ43WB6N245K80NCJGNAR2P, new-height: u157577 }
 { borrower: 'SP164SS9Y29G3BJABQXQ13M8GQPA15A5N1S3TKJBV, new-height: u158673 }
))

(define-public (set-borrowers-block-height)
  (begin
    ;; TODO: remove 
    (asserts! false (err u1))
    (asserts! (var-get enabled) (err u10))
    (asserts! (is-eq deployer tx-sender) (err u11))
    (asserts! (not (var-get executed-borrower-block-height)) (err u10))
    ;; enabled access
    (try! (contract-call? .pool-reserve-data set-approved-contract (as-contract tx-sender) true))

    ;; set to last updated block height of the v2 version for borrowers
    ;; only addr-2 is a borrower in this case
    (try! (fold check-err (map set-ststx-user-burn-block-height-lambda borrowers) (ok true)))

    ;; disable access
    (try! (contract-call? .pool-reserve-data set-approved-contract (as-contract tx-sender) false))

    (var-set executed-borrower-block-height true)
    (ok true)
  )
)

(define-private (set-ststx-user-burn-block-height-lambda (ststx-borrower (tuple (borrower principal) (new-height uint))))
  (set-user-burn-block-height-to-stacks-block-height
    (get borrower ststx-borrower)
    'SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token
    (get new-height ststx-borrower))
)

(define-private (check-err (result (response bool uint)) (prior (response bool uint)))
  (match prior ok-value result err-value (err err-value))
)

(define-private (set-user-burn-block-height-to-stacks-block-height
  (account principal)
  (asset principal)
  (new-stacks-block-height uint))
  (begin
    (try!
      (contract-call? .pool-reserve-data set-user-reserve-data
        account
        asset
          (merge
            (unwrap-panic (contract-call? .pool-reserve-data get-user-reserve-data-read account asset))
            { last-updated-block: new-stacks-block-height })))
    (ok true)
  )
)

(define-read-only (can-execute)
  (begin
    (asserts! (not (var-get executed)) (err u10))
    (ok (not (var-get executed)))
  )
)

(define-public (disable)
  (begin
    (asserts! (is-eq deployer tx-sender) (err u11))
    (ok (var-set enabled false))
  )
)

;; (run-update)
;; (burn-mint-zststx)

Functions (6)

FunctionAccessArgs
set-borrowers-block-heightpublic
set-ststx-user-burn-block-height-lambdaprivateststx-borrower: (tuple (borrower principal, new-height: uint
check-errprivateresult: (response bool uint
set-user-burn-block-height-to-stacks-block-heightprivateaccount: principal, asset: principal, new-stacks-block-height: uint
can-executeread-only
disablepublic