getprop("ro.product.device") == "tucana" || abort("E3004: This package is for \"tucana\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/tucana_eea/tucana:10/QKQ1.190825.002/V11.1.1.0.QFDEUXM:user/release-keys");
ui_print("Target: Xiaomi/tucana_eea/tucana:10/QKQ1.190825.002/V11.1.2.0.QFDEUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/tucana_eea/tucana:10/QKQ1.190825.002/V11.1.1.0.QFDEUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/tucana_eea/tucana:10/QKQ1.190825.002/V11.1.2.0.QFDEUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/tucana_eea/tucana:10/QKQ1.190825.002/V11.1.1.0.QFDEUXM:user/release-keys or Xiaomi/tucana_eea/tucana:10/QKQ1.190825.002/V11.1.2.0.QFDEUXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
show_progress(0.100000, 10);
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/boot:134217728:939147c088fb42a8fb76bc7a77994d40f608f071",
                      "EMMC:/dev/block/bootdevice/by-name/boot:134217728:e9fa20fa8bd2e68dadd1e4a3919e7067b7b16c9d") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:939147c088fb42a8fb76bc7a77994d40f608f071\" or \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:e9fa20fa8bd2e68dadd1e4a3919e7067b7b16c9d\" has unexpected contents.");
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
show_progress(0.100000, 70);
if (range_sha1("/dev/block/bootdevice/by-name/system", "1106,1,748,791,805,838,845,847,848,1094,1099,1101,1102,1208,1209,1694,1695,2383,2384,2386,2388,2389,2390,2405,2406,2587,2588,3759,3760,3762,3763,3767,3768,3776,3777,3778,3779,9137,9138,9140,9141,9545,9546,9548,9549,10545,10547,16486,16487,16620,16621,19390,19392,25659,25661,32768,32770,33053,33054,34889,34890,34892,34894,34953,34954,35087,35089,35244,35248,35256,35257,35265,35269,35274,35275,35302,35306,35310,35311,35802,35806,35822,35823,35835,35839,35843,35844,37056,37062,37094,37095,37101,37105,37109,37110,37115,37119,37123,37124,37241,37247,37253,37254,39392,39396,39425,39426,39456,39460,39464,39465,39681,39685,39693,39694,39791,39795,39799,41219,42956,42960,42981,42982,42995,42999,43003,43004,43010,43014,43018,43019,43021,43022,45858,45862,45890,45891,46261,46265,46273,46274,46373,46379,46384,46385,46513,46517,46523,46524,46927,46931,46946,46947,51624,51628,51722,51723,51728,51732,51736,51737,52421,52425,52447,52448,56139,56140,56301,56302,57059,57063,57079,57080,57497,57501,57505,57506,59261,59265,59308,59309,59313,59317,59321,59322,59344,59348,59372,59373,61632,61636,61666,61667,61736,61740,61744,61745,61828,61832,61838,61839,65536,65537,66988,66990,71593,71594,73180,73184,75346,75347,75619,75623,75635,75636,75668,75672,75682,75684,75688,75689,75694,75695,76145,76149,76552,76553,77235,77239,77255,77256,79525,79529,79576,79577,79970,79974,79987,79988,83079,83080,86535,86539,86605,86606,87531,87535,87560,87561,95535,95539,95657,95658,97641,97645,97651,97652,97695,97699,97704,97705,97780,97784,97788,97789,97833,97839,97844,97845,98304,98306,98589,98590,101525,101529,101547,101548,102943,102944,103363,103367,103373,103374,103723,103727,103741,103742,104107,104108,104347,104351,104367,104368,123666,123670,123875,123876,124264,124270,124284,124285,124295,124299,124306,124307,128283,128287,128351,128352,129356,129360,129382,129383,129434,129438,129443,129444,129447,129453,129458,129459,129464,129468,129472,129473,131072,131073,132781,132785,132832,132833,132916,132920,132926,132927,132929,132933,132937,132938,132983,132987,132991,132992,133726,133732,133749,133750,134115,134121,134131,134132,134328,134332,134337,134338,136171,136177,136203,136204,136243,136247,136251,136252,138159,138163,138187,138188,138258,138262,138267,138268,139005,139009,139027,139028,139128,139132,139138,139139,140126,140130,140155,140156,146005,146009,146099,146100,146108,146112,146116,146117,146252,146256,146262,146263,147729,147733,147749,147750,149017,149023,149039,149040,149933,149937,149964,149965,149969,149973,149977,149978,150000,150004,150008,150009,150013,150017,150020,150021,150025,150026,150041,150045,150049,150050,150074,150078,150082,150083,152884,152888,152934,152935,153203,153207,153217,153218,153569,153575,153584,153585,154510,154514,155405,155406,155825,155829,155841,155844,158368,158372,158387,158388,158874,158878,158886,158887,161513,161518,161535,161536,161871,161872,163502,163511,163827,163828,163840,163842,164125,164126,165052,165053,165916,166027,166795,166796,167166,167175,167200,167264,169325,169330,169331,169332,169333,169334,169335,169336,169337,169338,169339,169340,169341,169342,169343,169344,169345,169346,169347,169348,169349,169350,169351,169352,169353,169354,169355,169356,169357,169358,169359,169360,169361,169362,169363,169364,169365,169366,169367,169368,169369,169370,169371,169372,169373,169374,169375,169376,169377,169378,169379,169380,169381,169382,169383,169384,169385,169386,169387,169388,169389,169390,169391,169392,169393,169394,169395,169396,169397,169398,169399,169400,169401,169402,169403,169404,169405,169406,169407,169408,169409,169410,169411,169412,169413,169414,169415,169416,169417,169418,169419,169420,169421,169422,169423,169424,169425,169426,169427,169428,169429,169430,169431,169432,169433,169434,169435,169436,169437,169438,169439,169440,169441,169442,169443,169444,169445,169446,169447,169448,169449,169450,169451,169452,169453,169454,169455,169456,169457,169458,169459,169460,169461,169462,169463,169464,169465,169466,169467,169468,169469,169470,169471,169472,169473,169474,169475,169476,169477,169478,169479,169480,169481,169482,169483,169484,169485,169486,169487,169488,169489,169490,169491,169492,169493,169494,169495,169496,169497,169498,169499,169500,169501,169502,169503,169504,169505,169506,169507,169508,169509,169510,169511,169512,169513,169514,169515,169516,169517,169518,169519,169520,169521,169522,169523,169524,169525,169526,169527,169528,169529,169530,169531,169532,169533,169534,169535,169536,169537,169538,169539,169540,169541,169542,169543,169544,169545,169546,169547,169548,169549,169550,169551,169552,169553,169554,169555,169556,169557,169558,169559,169560,169561,169562,169563,169564,169565,169566,169567,169568,169569,169570,169571,169572,169573,169574,169575,169576,169577,169578,169579,169580,169581,169582,169583,169584,169585,169586,169587,169588,169589,169590,169591,169592,169593,169594,169595,169596,169597,169598,169599,169600,169601,169602,169603,169604,169605,169606,169607,169608,169609,169610,169611,169612,169613,169614,169615,169616,169617,169618,169619,169620,169621,169622,169623,169624,169625,169626,169627,169628,169629,169630,169631,169632,169633,169634,169635,169636,169637,169638,169639,169640,169641,169642,169643,169644,169645,169646,169647,169648,169649,169650,169651,169652,169653,169654,169655,169656,169657,169658,169659,169660,169661,169662,169663,169664,169665,169666,169667,169668,169669,169670,169671,169672,169673,169674,169675,169676,169677,169678,169679,169680,169681,169682,169683,169684,169685,169686,169687,169688,169689,169690,169691,169692,169693,169694,169695,169696,169697,169698,169699,169700,169701,169702,169703,169704,169705,169706,169707,169708,169709,169710,169711,169712,169713,169714,169715,169716,169717,169718,169719,169720,169721,169722,169723,169724,169725,169726,169727,169728,169729,169730,169731,169732,169733,169734,169735,169736,169737,169738,169739,169740,169741,169742,169743,169744,169745,169746,169747,169748,169749,169750,169751,169752,169753,169754,169755,169756,169757,169758,169759,169760,169761,169762,169763,169764,169765,169766,169767,169768,169769,169770,169771,169772,169773,169775,169781,169782,170093,170094,170106,170107,170117,170120,170121,170122,170123,170124,170126,170127,170128,170129,170167,170168,170174,170175,170261,170264,170266,170267,171374,171375,171615,171616,171617,171619,171642,171643,171714,171715,171718,171723,171724,171725,171726,171727,171728,171729,172508,172509,172515,172516,172979,172981,173444,173446,173447,173448,173449,173450,173451,173452,173453,173454,173455,173456,173457,173458,173460,173461,173462,173465,174132,174134,174135,174136,174217,174218,174219,174220,174222,174223,174226,174228,174486,174487,174494,174496,174986,174988,175110,175111,175122,175123,175389,175390,175503,175504,175520,175522,175524,175525,184447,184448,192411,192412,194315,194316,194789,194878,196064,196317,196608,196609,198145,212051,212276,212317,212324,214433,217030,217132,217194,217195,218534,218847,220416,229378,229661,229662,230167,262145,262650,294914,295197,295198,295703,327681,328186,360449,360954,393217,393722,425985,426490,458753,459258,491521,492026,524289,524794,557057,557562,589825,590330,622593,623098,655361,655866,688129,688634,720897,721402,753665,754170,786433,786938,819202,819485,819486,819991,851969,852474,884738,885021,885022,885527,917505,918010,948536,1146880,1146881,1161015,1179411,1179647,1179648") == "8204a70b3ddf1756c5379ccc3890fe52223c40eb" || block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat")) then
ui_print("Verified system image...");
else
check_first_block("/dev/block/bootdevice/by-name/system");
ifelse (block_image_recover("/dev/block/bootdevice/by-name/system", "1106,1,748,791,805,838,845,847,848,1094,1099,1101,1102,1208,1209,1694,1695,2383,2384,2386,2388,2389,2390,2405,2406,2587,2588,3759,3760,3762,3763,3767,3768,3776,3777,3778,3779,9137,9138,9140,9141,9545,9546,9548,9549,10545,10547,16486,16487,16620,16621,19390,19392,25659,25661,32768,32770,33053,33054,34889,34890,34892,34894,34953,34954,35087,35089,35244,35248,35256,35257,35265,35269,35274,35275,35302,35306,35310,35311,35802,35806,35822,35823,35835,35839,35843,35844,37056,37062,37094,37095,37101,37105,37109,37110,37115,37119,37123,37124,37241,37247,37253,37254,39392,39396,39425,39426,39456,39460,39464,39465,39681,39685,39693,39694,39791,39795,39799,41219,42956,42960,42981,42982,42995,42999,43003,43004,43010,43014,43018,43019,43021,43022,45858,45862,45890,45891,46261,46265,46273,46274,46373,46379,46384,46385,46513,46517,46523,46524,46927,46931,46946,46947,51624,51628,51722,51723,51728,51732,51736,51737,52421,52425,52447,52448,56139,56140,56301,56302,57059,57063,57079,57080,57497,57501,57505,57506,59261,59265,59308,59309,59313,59317,59321,59322,59344,59348,59372,59373,61632,61636,61666,61667,61736,61740,61744,61745,61828,61832,61838,61839,65536,65537,66988,66990,71593,71594,73180,73184,75346,75347,75619,75623,75635,75636,75668,75672,75682,75684,75688,75689,75694,75695,76145,76149,76552,76553,77235,77239,77255,77256,79525,79529,79576,79577,79970,79974,79987,79988,83079,83080,86535,86539,86605,86606,87531,87535,87560,87561,95535,95539,95657,95658,97641,97645,97651,97652,97695,97699,97704,97705,97780,97784,97788,97789,97833,97839,97844,97845,98304,98306,98589,98590,101525,101529,101547,101548,102943,102944,103363,103367,103373,103374,103723,103727,103741,103742,104107,104108,104347,104351,104367,104368,123666,123670,123875,123876,124264,124270,124284,124285,124295,124299,124306,124307,128283,128287,128351,128352,129356,129360,129382,129383,129434,129438,129443,129444,129447,129453,129458,129459,129464,129468,129472,129473,131072,131073,132781,132785,132832,132833,132916,132920,132926,132927,132929,132933,132937,132938,132983,132987,132991,132992,133726,133732,133749,133750,134115,134121,134131,134132,134328,134332,134337,134338,136171,136177,136203,136204,136243,136247,136251,136252,138159,138163,138187,138188,138258,138262,138267,138268,139005,139009,139027,139028,139128,139132,139138,139139,140126,140130,140155,140156,146005,146009,146099,146100,146108,146112,146116,146117,146252,146256,146262,146263,147729,147733,147749,147750,149017,149023,149039,149040,149933,149937,149964,149965,149969,149973,149977,149978,150000,150004,150008,150009,150013,150017,150020,150021,150025,150026,150041,150045,150049,150050,150074,150078,150082,150083,152884,152888,152934,152935,153203,153207,153217,153218,153569,153575,153584,153585,154510,154514,155405,155406,155825,155829,155841,155844,158368,158372,158387,158388,158874,158878,158886,158887,161513,161518,161535,161536,161871,161872,163502,163511,163827,163828,163840,163842,164125,164126,165052,165053,165916,166027,166795,166796,167166,167175,167200,167264,169325,169330,169331,169332,169333,169334,169335,169336,169337,169338,169339,169340,169341,169342,169343,169344,169345,169346,169347,169348,169349,169350,169351,169352,169353,169354,169355,169356,169357,169358,169359,169360,169361,169362,169363,169364,169365,169366,169367,169368,169369,169370,169371,169372,169373,169374,169375,169376,169377,169378,169379,169380,169381,169382,169383,169384,169385,169386,169387,169388,169389,169390,169391,169392,169393,169394,169395,169396,169397,169398,169399,169400,169401,169402,169403,169404,169405,169406,169407,169408,169409,169410,169411,169412,169413,169414,169415,169416,169417,169418,169419,169420,169421,169422,169423,169424,169425,169426,169427,169428,169429,169430,169431,169432,169433,169434,169435,169436,169437,169438,169439,169440,169441,169442,169443,169444,169445,169446,169447,169448,169449,169450,169451,169452,169453,169454,169455,169456,169457,169458,169459,169460,169461,169462,169463,169464,169465,169466,169467,169468,169469,169470,169471,169472,169473,169474,169475,169476,169477,169478,169479,169480,169481,169482,169483,169484,169485,169486,169487,169488,169489,169490,169491,169492,169493,169494,169495,169496,169497,169498,169499,169500,169501,169502,169503,169504,169505,169506,169507,169508,169509,169510,169511,169512,169513,169514,169515,169516,169517,169518,169519,169520,169521,169522,169523,169524,169525,169526,169527,169528,169529,169530,169531,169532,169533,169534,169535,169536,169537,169538,169539,169540,169541,169542,169543,169544,169545,169546,169547,169548,169549,169550,169551,169552,169553,169554,169555,169556,169557,169558,169559,169560,169561,169562,169563,169564,169565,169566,169567,169568,169569,169570,169571,169572,169573,169574,169575,169576,169577,169578,169579,169580,169581,169582,169583,169584,169585,169586,169587,169588,169589,169590,169591,169592,169593,169594,169595,169596,169597,169598,169599,169600,169601,169602,169603,169604,169605,169606,169607,169608,169609,169610,169611,169612,169613,169614,169615,169616,169617,169618,169619,169620,169621,169622,169623,169624,169625,169626,169627,169628,169629,169630,169631,169632,169633,169634,169635,169636,169637,169638,169639,169640,169641,169642,169643,169644,169645,169646,169647,169648,169649,169650,169651,169652,169653,169654,169655,169656,169657,169658,169659,169660,169661,169662,169663,169664,169665,169666,169667,169668,169669,169670,169671,169672,169673,169674,169675,169676,169677,169678,169679,169680,169681,169682,169683,169684,169685,169686,169687,169688,169689,169690,169691,169692,169693,169694,169695,169696,169697,169698,169699,169700,169701,169702,169703,169704,169705,169706,169707,169708,169709,169710,169711,169712,169713,169714,169715,169716,169717,169718,169719,169720,169721,169722,169723,169724,169725,169726,169727,169728,169729,169730,169731,169732,169733,169734,169735,169736,169737,169738,169739,169740,169741,169742,169743,169744,169745,169746,169747,169748,169749,169750,169751,169752,169753,169754,169755,169756,169757,169758,169759,169760,169761,169762,169763,169764,169765,169766,169767,169768,169769,169770,169771,169772,169773,169775,169781,169782,170093,170094,170106,170107,170117,170120,170121,170122,170123,170124,170126,170127,170128,170129,170167,170168,170174,170175,170261,170264,170266,170267,171374,171375,171615,171616,171617,171619,171642,171643,171714,171715,171718,171723,171724,171725,171726,171727,171728,171729,172508,172509,172515,172516,172979,172981,173444,173446,173447,173448,173449,173450,173451,173452,173453,173454,173455,173456,173457,173458,173460,173461,173462,173465,174132,174134,174135,174136,174217,174218,174219,174220,174222,174223,174226,174228,174486,174487,174494,174496,174986,174988,175110,175111,175122,175123,175389,175390,175503,175504,175520,175522,175524,175525,184447,184448,192411,192412,194315,194316,194789,194878,196064,196317,196608,196609,198145,212051,212276,212317,212324,214433,217030,217132,217194,217195,218534,218847,220416,229378,229661,229662,230167,262145,262650,294914,295197,295198,295703,327681,328186,360449,360954,393217,393722,425985,426490,458753,459258,491521,492026,524289,524794,557057,557562,589825,590330,622593,623098,655361,655866,688129,688634,720897,721402,753665,754170,786433,786938,819202,819485,819486,819991,851969,852474,884738,885021,885022,885527,917505,918010,948536,1146880,1146881,1161015,1179411,1179647,1179648") && block_image_verify("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat"), ui_print("system recovered successfully."), abort("E1004: system partition fails to recover"));
endif;
if (range_sha1("/dev/block/bootdevice/by-name/vendor", "340,1,308,633,641,651,655,660,661,742,746,751,752,2458,2462,2940,2941,3202,3206,3211,3212,3214,3225,3463,3467,3517,3518,3678,3679,3691,3695,3699,3700,3703,3707,3711,3712,4220,4224,4237,4238,4246,4250,4255,4256,4753,4803,4822,5127,5204,5205,6251,6257,15626,15627,15742,15743,15859,15911,16511,16512,17144,17145,18120,18126,20379,20380,22029,22030,23301,23302,32768,32770,32895,32896,45145,45147,52755,52756,57428,57429,60281,60282,64870,64871,65536,65537,67775,67776,80445,80446,85202,85203,92147,92148,97102,97103,98108,98110,98126,98128,98304,98306,98431,98432,99211,99212,99287,99288,131072,131073,137709,137710,145912,145915,145933,145934,145979,145980,145998,145999,146001,146002,146050,146051,146101,146102,146108,146109,146134,146135,146170,146171,146364,146365,147191,147192,147205,147206,150861,150863,156999,157000,157002,157003,157559,157561,157628,157629,163840,163842,163967,163968,164613,164614,167664,167665,167666,167667,167688,167689,168114,168115,168171,168172,168520,168522,168523,168529,168570,168572,168577,168587,168606,168607,168609,168613,168634,168635,168784,168785,169626,196609,197114,210006,210168,210205,211776,211789,211990,212042,212815,212816,213792,213793,214637,216234,216536,216626,224562,224563,226305,226455,229376,229378,229503,229504,244122,244332,244394,244403,245919,245920,246412,246418,249166,249188,252980,252981,253931,253971,254868,254869,254891,254892,255562,258457,258461,261782,261799,261801,262144,262145,264449,264450,266946,266948,268829,268830,268922,268923,269116,269117,269944,294914,295039,295040,295545,310451,310966,310993,312492,312493,312864,312871,313188,313219,313249,313266,313328,313329,314320,314321,315349,315350,315663,315664,316647,318117,319301,319419,327680,327681,331556,331557,360448,360449,379303,379304,383678,383679,393216,393217,396982,397185,408029,408030,415609,415610,418985,418986,425984,425985,433098,433099,433859,434158,435184,435191,437730,437738,445473,445474,448928,448951,450786,450787,453898,453938,454202,454203,454227,454228,455493,455494,458752,458753,462264,462266,465645,465649,465672,465673,465693,465697,471144,471145,471153,471155,471179,471180,471205,471236,471242,471253,491520,491521,515995,524173,524287,524288") == "d13a31d3dabdceeb28a240867ceb9aedc8f213be" || block_image_verify("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat")) then
ui_print("Verified vendor image...");
else
check_first_block("/dev/block/bootdevice/by-name/vendor");
ifelse (block_image_recover("/dev/block/bootdevice/by-name/vendor", "340,1,308,633,641,651,655,660,661,742,746,751,752,2458,2462,2940,2941,3202,3206,3211,3212,3214,3225,3463,3467,3517,3518,3678,3679,3691,3695,3699,3700,3703,3707,3711,3712,4220,4224,4237,4238,4246,4250,4255,4256,4753,4803,4822,5127,5204,5205,6251,6257,15626,15627,15742,15743,15859,15911,16511,16512,17144,17145,18120,18126,20379,20380,22029,22030,23301,23302,32768,32770,32895,32896,45145,45147,52755,52756,57428,57429,60281,60282,64870,64871,65536,65537,67775,67776,80445,80446,85202,85203,92147,92148,97102,97103,98108,98110,98126,98128,98304,98306,98431,98432,99211,99212,99287,99288,131072,131073,137709,137710,145912,145915,145933,145934,145979,145980,145998,145999,146001,146002,146050,146051,146101,146102,146108,146109,146134,146135,146170,146171,146364,146365,147191,147192,147205,147206,150861,150863,156999,157000,157002,157003,157559,157561,157628,157629,163840,163842,163967,163968,164613,164614,167664,167665,167666,167667,167688,167689,168114,168115,168171,168172,168520,168522,168523,168529,168570,168572,168577,168587,168606,168607,168609,168613,168634,168635,168784,168785,169626,196609,197114,210006,210168,210205,211776,211789,211990,212042,212815,212816,213792,213793,214637,216234,216536,216626,224562,224563,226305,226455,229376,229378,229503,229504,244122,244332,244394,244403,245919,245920,246412,246418,249166,249188,252980,252981,253931,253971,254868,254869,254891,254892,255562,258457,258461,261782,261799,261801,262144,262145,264449,264450,266946,266948,268829,268830,268922,268923,269116,269117,269944,294914,295039,295040,295545,310451,310966,310993,312492,312493,312864,312871,313188,313219,313249,313266,313328,313329,314320,314321,315349,315350,315663,315664,316647,318117,319301,319419,327680,327681,331556,331557,360448,360449,379303,379304,383678,383679,393216,393217,396982,397185,408029,408030,415609,415610,418985,418986,425984,425985,433098,433099,433859,434158,435184,435191,437730,437738,445473,445474,448928,448951,450786,450787,453898,453938,454202,454203,454227,454228,455493,455494,458752,458753,462264,462266,465645,465649,465672,465673,465693,465697,471144,471145,471153,471155,471179,471180,471205,471236,471242,471253,491520,491521,515995,524173,524287,524288") && block_image_verify("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat"), ui_print("vendor recovered successfully."), abort("E2004: vendor partition fails to recover"));
endif;

# ---- start making changes here ----

ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition("EMMC:/dev/block/bootdevice/by-name/boot:134217728:939147c088fb42a8fb76bc7a77994d40f608f071",
                "EMMC:/dev/block/bootdevice/by-name/boot:134217728:e9fa20fa8bd2e68dadd1e4a3919e7067b7b16c9d",
                package_extract_file("boot.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/boot:134217728:e9fa20fa8bd2e68dadd1e4a3919e7067b7b16c9d");

# ---- radio update tasks ----

ui_print("Patching firmware images...");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/imagefv.elf", "/dev/block/bootdevice/by-name/imagefv");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aop");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_config");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecapp");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfw");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/storsec.mbn", "/dev/block/bootdevice/by-name/storsec");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/imagefv.elf", "/dev/block/bootdevice/by-name/imagefvbak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aopbak");
package_extract_file("firmware-update/xbl_config.elf", "/dev/block/bootdevice/by-name/xbl_configbak");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecappbak");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfwbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
show_progress(0.600000, 600);
ui_print("Patching system image after verification.");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");
ui_print("Patching vendor image after verification.");
block_image_update("/dev/block/bootdevice/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");
show_progress(0.100000, 2);

# ---- radio update tasks 2 ----

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/dtbo.img", "/dev/block/bootdevice/by-name/dtbo");
package_extract_file("firmware-update/vbmeta.img", "/dev/block/bootdevice/by-name/vbmeta");
