getprop("ro.product.device") == "raphael" || abort("E3004: This package is for \"raphael\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/raphael/raphael:10/QKQ1.190716.003/V11.0.1.0.QFKCNXM:user/release-keys");
ui_print("Target: Xiaomi/raphael/raphael:10/QKQ1.190716.003/V11.0.2.0.QFKCNXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/raphael/raphael:10/QKQ1.190716.003/V11.0.1.0.QFKCNXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/raphael/raphael:10/QKQ1.190716.003/V11.0.2.0.QFKCNXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/raphael/raphael:10/QKQ1.190716.003/V11.0.1.0.QFKCNXM:user/release-keys or Xiaomi/raphael/raphael:10/QKQ1.190716.003/V11.0.2.0.QFKCNXM: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:6462967d019bf86dbbd1929a624af4dc84b6bb19",
                      "EMMC:/dev/block/bootdevice/by-name/boot:134217728:0722ceeaf7ff53d71c2186a2c25fd872a4358e15") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:6462967d019bf86dbbd1929a624af4dc84b6bb19\" or \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:0722ceeaf7ff53d71c2186a2c25fd872a4358e15\" 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", "1014,1,649,728,742,773,780,782,783,1029,1034,1036,1037,1143,1144,1626,1627,2315,2316,2318,2320,2321,2322,2337,2338,2519,2520,3688,3689,3691,3692,3696,3697,3705,3706,3707,3708,9065,9066,9068,9069,9472,9473,9475,9476,10471,10473,16411,16412,16545,16546,19315,19317,25538,25540,32768,32770,32990,32991,34705,34706,34708,34710,34769,34770,34903,34905,35021,35023,35032,35033,35042,35044,35050,35051,36052,36056,36089,36090,36096,36098,36104,36105,36110,36112,36118,36119,36161,36165,36173,36174,36632,36633,36644,36646,36652,36653,36841,36843,36853,36854,36857,36858,36875,36877,36883,39032,39066,39067,39803,39805,39828,39829,39837,39839,39845,39846,39848,39849,42684,42686,42716,42717,42793,42797,42804,42805,42933,42935,42943,42944,43206,43207,43400,43402,43419,43420,45878,45880,45910,45911,46558,46560,46584,46585,50276,50277,50434,50435,50439,50441,50447,50448,50470,50472,50498,50499,52676,52678,52710,52711,52741,52743,52749,52750,52833,52835,52843,52844,57805,57807,62414,62415,62701,62703,62717,62718,62728,62730,62736,62737,62750,62752,62776,62777,63399,63401,63419,63420,63430,63432,63438,63439,64948,64950,64988,64989,65221,65222,65536,65537,66110,66112,66127,66128,69352,69353,69942,69944,69963,69964,77107,77109,77191,77192,79054,79056,79064,79065,79104,79106,79113,79114,84804,84806,84884,84885,84959,84961,84967,84968,85012,85016,85023,85024,87488,87490,87508,87509,89007,89008,89125,89126,89463,89465,89480,89481,89486,89488,89494,89495,91501,91502,91914,91917,92256,92260,92276,92277,94890,94894,94953,94954,95324,95326,95341,95342,95391,95393,95400,95401,95404,95408,95415,95416,98304,98306,98526,98527,99168,99170,99219,99220,99278,99280,99288,99289,99332,99334,99340,99341,99853,99857,99876,99877,100102,100106,100118,100119,100315,100317,100324,100325,100961,100965,100990,100991,101029,101031,101037,101038,102251,102253,102279,102280,102397,102399,102407,102408,102474,102476,102483,102484,103197,103199,103219,103220,103377,103379,103388,103389,111588,111590,114154,114155,114166,114168,114174,114175,114242,114244,114252,114253,118630,118634,118697,118698,123810,123812,123883,123884,123892,123894,123900,123901,124049,124051,124059,124060,124760,124762,124780,124781,124791,124793,124799,124800,127355,127357,127820,127821,128604,128608,128626,128627,131072,131073,140958,140960,146397,146398,146759,146761,147286,147287,148180,148182,148211,148212,148216,148218,148224,148225,148238,148240,148246,148247,148251,148253,148263,148264,148279,148281,148287,148288,148690,148692,148699,148700,150533,150535,150580,150581,150584,150586,150592,150593,150979,150981,150997,150998,151140,151144,151154,151155,151412,151414,151428,151429,151479,151481,151490,151491,151517,151521,151528,151529,152785,152787,152816,152817,153688,153691,157600,157602,159816,159817,160213,160215,160229,160232,162118,162120,162137,162138,162488,162490,162500,162501,163840,163842,164062,164063,164569,164570,165605,165608,165627,165628,165967,165968,167868,167869,168302,168303,170026,170027,172523,172528,173918,173919,176914,176915,177982,177983,181615,181616,193164,193165,193529,193530,196608,196609,197572,197573,203336,203337,207355,207356,209578,209579,219679,219680,220145,220146,223458,223459,227697,227698,228054,228055,229376,229378,229598,229599,231287,231288,232025,232026,232821,232822,235635,235636,242206,242207,247100,247101,247922,247923,253017,253018,254268,254269,254555,254556,254567,254568,254578,254581,254582,254583,254584,254585,254587,254588,254589,254590,254633,254634,254719,254720,254724,254725,255832,255833,256073,256074,256080,256081,256104,256105,256171,256172,256175,256180,256181,256182,256183,256184,256185,256186,256965,256966,256972,256973,257436,257438,257901,257903,257904,257905,257906,257907,257908,257909,257910,257911,257912,257913,257914,257915,257916,257917,257918,257921,258873,258875,258956,258957,258959,258960,258963,258965,259223,259224,259231,259233,259718,259720,259842,259843,259854,259855,260121,260122,260235,260236,260252,260254,261570,261571,262144,262145,275784,275785,283708,283709,285705,285706,286176,286177,291289,291290,294912,294914,295134,295135,308516,308517,308680,308681,314745,314746,327680,327681,336185,336186,346867,347310,347382,347655,347684,347686,348708,348709,359160,359161,360448,360449,365736,365737,369849,369850,370146,370147,370459,370460,370475,370476,370504,370505,370548,370549,372754,374182,378805,378806,386813,386814,389530,389826,392950,392952,393216,393217,397707,397708,397904,397906,397967,397968,401566,401567,406988,406989,407373,407374,407545,407546,408802,408803,413501,413502,415879,415880,416240,416241,416261,416262,416296,416297,416367,416368,425984,425985,436976,436977,441624,441625,457149,457150,458752,458753,479236,479237,479964,479966,491520,491521,501165,501166,503971,504386,504932,504933,512622,512623,523469,523470,524288,524289,528866,528867,536205,536206,536755,536756,536975,536976,538677,538680,540012,540013,540163,540164,543450,543451,544230,544231,545192,545193,549178,549179,557056,557057,561365,561369,561388,561389,561392,561393,561416,561417,561487,561488,561502,561503,561507,561508,561518,561519,561532,561533,561554,561555,561600,561602,561603,561604,561605,561606,561607,561608,561609,561610,561612,561613,561617,561618,561619,561620,561621,561622,561624,561625,561626,561627,561628,561629,561631,561632,561633,561634,561635,561636,561637,561638,561639,561640,561641,561642,561643,561644,561645,561646,561647,561648,561650,561651,561653,561654,561655,561658,561660,561662,561670,561671,561677,561679,561685,561686,561692,561693,561697,561698,564888,564889,564994,564996,565006,565008,565026,565028,565068,565069,565432,565446,565450,568808,568990,569023,569035,569036,569930,569931,570358,570811,573327,573329,573377,573378,573386,573388,573394,573395,573469,573471,573478,573479,589824,589825,593329,593330,597230,597232,597283,597284,597442,597444,597454,597455,597461,597463,597469,597470,597760,597762,597776,597777,597831,597833,597840,597841,603131,603132,603406,603408,603419,603420,607241,607243,607519,607520,607527,607528,608833,608835,608878,608879,609937,609939,609969,609970,609978,609980,609986,609987,609995,609997,610003,610004,610258,610260,610273,610274,610278,610280,610290,610291,611519,611521,611547,611548,611577,611579,611585,611586,611991,611993,612005,612006,612099,612103,612112,612113,612134,612136,612143,612144,612149,612151,612157,612158,613675,613677,613695,613696,613782,613784,613792,613793,619315,619316,620761,620764,622118,622119,622592,622593,623425,623427,623438,623439,626117,626119,626182,626183,631820,631822,631841,655361,655866,688129,688634,720897,721402,753665,754170,786433,786938,819202,819422,819423,819928,851969,852474,855764,884736,884738,884958,884959,903007,917316,917503,917504") == "05efd617858ad05ddf54c8fc21b0123cf51acf88" || 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", "1014,1,649,728,742,773,780,782,783,1029,1034,1036,1037,1143,1144,1626,1627,2315,2316,2318,2320,2321,2322,2337,2338,2519,2520,3688,3689,3691,3692,3696,3697,3705,3706,3707,3708,9065,9066,9068,9069,9472,9473,9475,9476,10471,10473,16411,16412,16545,16546,19315,19317,25538,25540,32768,32770,32990,32991,34705,34706,34708,34710,34769,34770,34903,34905,35021,35023,35032,35033,35042,35044,35050,35051,36052,36056,36089,36090,36096,36098,36104,36105,36110,36112,36118,36119,36161,36165,36173,36174,36632,36633,36644,36646,36652,36653,36841,36843,36853,36854,36857,36858,36875,36877,36883,39032,39066,39067,39803,39805,39828,39829,39837,39839,39845,39846,39848,39849,42684,42686,42716,42717,42793,42797,42804,42805,42933,42935,42943,42944,43206,43207,43400,43402,43419,43420,45878,45880,45910,45911,46558,46560,46584,46585,50276,50277,50434,50435,50439,50441,50447,50448,50470,50472,50498,50499,52676,52678,52710,52711,52741,52743,52749,52750,52833,52835,52843,52844,57805,57807,62414,62415,62701,62703,62717,62718,62728,62730,62736,62737,62750,62752,62776,62777,63399,63401,63419,63420,63430,63432,63438,63439,64948,64950,64988,64989,65221,65222,65536,65537,66110,66112,66127,66128,69352,69353,69942,69944,69963,69964,77107,77109,77191,77192,79054,79056,79064,79065,79104,79106,79113,79114,84804,84806,84884,84885,84959,84961,84967,84968,85012,85016,85023,85024,87488,87490,87508,87509,89007,89008,89125,89126,89463,89465,89480,89481,89486,89488,89494,89495,91501,91502,91914,91917,92256,92260,92276,92277,94890,94894,94953,94954,95324,95326,95341,95342,95391,95393,95400,95401,95404,95408,95415,95416,98304,98306,98526,98527,99168,99170,99219,99220,99278,99280,99288,99289,99332,99334,99340,99341,99853,99857,99876,99877,100102,100106,100118,100119,100315,100317,100324,100325,100961,100965,100990,100991,101029,101031,101037,101038,102251,102253,102279,102280,102397,102399,102407,102408,102474,102476,102483,102484,103197,103199,103219,103220,103377,103379,103388,103389,111588,111590,114154,114155,114166,114168,114174,114175,114242,114244,114252,114253,118630,118634,118697,118698,123810,123812,123883,123884,123892,123894,123900,123901,124049,124051,124059,124060,124760,124762,124780,124781,124791,124793,124799,124800,127355,127357,127820,127821,128604,128608,128626,128627,131072,131073,140958,140960,146397,146398,146759,146761,147286,147287,148180,148182,148211,148212,148216,148218,148224,148225,148238,148240,148246,148247,148251,148253,148263,148264,148279,148281,148287,148288,148690,148692,148699,148700,150533,150535,150580,150581,150584,150586,150592,150593,150979,150981,150997,150998,151140,151144,151154,151155,151412,151414,151428,151429,151479,151481,151490,151491,151517,151521,151528,151529,152785,152787,152816,152817,153688,153691,157600,157602,159816,159817,160213,160215,160229,160232,162118,162120,162137,162138,162488,162490,162500,162501,163840,163842,164062,164063,164569,164570,165605,165608,165627,165628,165967,165968,167868,167869,168302,168303,170026,170027,172523,172528,173918,173919,176914,176915,177982,177983,181615,181616,193164,193165,193529,193530,196608,196609,197572,197573,203336,203337,207355,207356,209578,209579,219679,219680,220145,220146,223458,223459,227697,227698,228054,228055,229376,229378,229598,229599,231287,231288,232025,232026,232821,232822,235635,235636,242206,242207,247100,247101,247922,247923,253017,253018,254268,254269,254555,254556,254567,254568,254578,254581,254582,254583,254584,254585,254587,254588,254589,254590,254633,254634,254719,254720,254724,254725,255832,255833,256073,256074,256080,256081,256104,256105,256171,256172,256175,256180,256181,256182,256183,256184,256185,256186,256965,256966,256972,256973,257436,257438,257901,257903,257904,257905,257906,257907,257908,257909,257910,257911,257912,257913,257914,257915,257916,257917,257918,257921,258873,258875,258956,258957,258959,258960,258963,258965,259223,259224,259231,259233,259718,259720,259842,259843,259854,259855,260121,260122,260235,260236,260252,260254,261570,261571,262144,262145,275784,275785,283708,283709,285705,285706,286176,286177,291289,291290,294912,294914,295134,295135,308516,308517,308680,308681,314745,314746,327680,327681,336185,336186,346867,347310,347382,347655,347684,347686,348708,348709,359160,359161,360448,360449,365736,365737,369849,369850,370146,370147,370459,370460,370475,370476,370504,370505,370548,370549,372754,374182,378805,378806,386813,386814,389530,389826,392950,392952,393216,393217,397707,397708,397904,397906,397967,397968,401566,401567,406988,406989,407373,407374,407545,407546,408802,408803,413501,413502,415879,415880,416240,416241,416261,416262,416296,416297,416367,416368,425984,425985,436976,436977,441624,441625,457149,457150,458752,458753,479236,479237,479964,479966,491520,491521,501165,501166,503971,504386,504932,504933,512622,512623,523469,523470,524288,524289,528866,528867,536205,536206,536755,536756,536975,536976,538677,538680,540012,540013,540163,540164,543450,543451,544230,544231,545192,545193,549178,549179,557056,557057,561365,561369,561388,561389,561392,561393,561416,561417,561487,561488,561502,561503,561507,561508,561518,561519,561532,561533,561554,561555,561600,561602,561603,561604,561605,561606,561607,561608,561609,561610,561612,561613,561617,561618,561619,561620,561621,561622,561624,561625,561626,561627,561628,561629,561631,561632,561633,561634,561635,561636,561637,561638,561639,561640,561641,561642,561643,561644,561645,561646,561647,561648,561650,561651,561653,561654,561655,561658,561660,561662,561670,561671,561677,561679,561685,561686,561692,561693,561697,561698,564888,564889,564994,564996,565006,565008,565026,565028,565068,565069,565432,565446,565450,568808,568990,569023,569035,569036,569930,569931,570358,570811,573327,573329,573377,573378,573386,573388,573394,573395,573469,573471,573478,573479,589824,589825,593329,593330,597230,597232,597283,597284,597442,597444,597454,597455,597461,597463,597469,597470,597760,597762,597776,597777,597831,597833,597840,597841,603131,603132,603406,603408,603419,603420,607241,607243,607519,607520,607527,607528,608833,608835,608878,608879,609937,609939,609969,609970,609978,609980,609986,609987,609995,609997,610003,610004,610258,610260,610273,610274,610278,610280,610290,610291,611519,611521,611547,611548,611577,611579,611585,611586,611991,611993,612005,612006,612099,612103,612112,612113,612134,612136,612143,612144,612149,612151,612157,612158,613675,613677,613695,613696,613782,613784,613792,613793,619315,619316,620761,620764,622118,622119,622592,622593,623425,623427,623438,623439,626117,626119,626182,626183,631820,631822,631841,655361,655866,688129,688634,720897,721402,753665,754170,786433,786938,819202,819422,819423,819928,851969,852474,855764,884736,884738,884958,884959,903007,917316,917503,917504") && 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", "310,1,272,602,610,620,622,629,630,711,713,720,721,982,984,991,1002,1005,1007,1013,1014,1022,1024,1031,1034,1048,1049,1952,1953,12423,12424,12541,12542,13342,13343,13975,13976,14962,14967,17220,17221,18870,18871,20142,20143,32768,32770,32864,32865,41955,41957,45228,45229,65536,65537,66510,66511,67927,67928,74887,74888,83623,83626,92910,92912,92942,92943,93305,93307,93790,93791,93839,93840,98304,98306,98400,98401,120941,120944,120962,120963,121008,121009,121027,121028,121030,121031,121116,121117,121327,121328,121353,121354,121387,121388,121582,121583,121733,121734,121747,121748,128961,128962,130150,130152,131072,131073,136794,136795,136798,136799,137350,137352,143721,143722,143724,143725,146765,146766,146767,146768,146788,146789,147214,147215,147271,147272,147633,147635,147636,147642,147938,147940,147948,147961,147962,147964,147974,147989,147998,148002,148151,148152,148499,148500,148837,148838,153041,153042,153540,153541,156306,156307,160508,160509,161007,161008,163559,163560,163840,163842,163936,163937,164611,164612,164790,164833,167411,167412,168384,168385,169211,171290,179643,179644,196608,196609,198541,198542,211846,211847,212540,212541,212563,212564,213244,213245,213536,213660,215604,215663,216287,219241,220188,220190,221880,221881,224858,224860,226377,226378,226465,226466,226658,226659,226997,226998,227335,227336,229376,229378,229472,229473,232141,232142,232640,232641,235406,235407,239608,239609,240107,240108,242659,242660,243109,243110,243426,243457,244947,244948,245730,245731,246685,246686,247714,247715,248028,248029,249022,251152,261687,261688,262144,262145,294889,294890,294912,294914,295008,295009,307236,307237,314800,314801,327680,327681,330036,330037,332633,332634,341144,341145,349129,349130,350955,350956,350980,350981,352282,352283,359035,359037,360448,360449,361771,361775,361777,361778,361786,361787,361789,361790,361792,361793,361795,361796,361799,361800,361890,361891,361893,361894,361896,361897,361899,361900,366270,366271,366279,366281,366305,366306,366323,366354,366360,366371,386991,393125,393215,393216") == "7067f9e4566efc77136f361db32758810dae8705" || 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", "310,1,272,602,610,620,622,629,630,711,713,720,721,982,984,991,1002,1005,1007,1013,1014,1022,1024,1031,1034,1048,1049,1952,1953,12423,12424,12541,12542,13342,13343,13975,13976,14962,14967,17220,17221,18870,18871,20142,20143,32768,32770,32864,32865,41955,41957,45228,45229,65536,65537,66510,66511,67927,67928,74887,74888,83623,83626,92910,92912,92942,92943,93305,93307,93790,93791,93839,93840,98304,98306,98400,98401,120941,120944,120962,120963,121008,121009,121027,121028,121030,121031,121116,121117,121327,121328,121353,121354,121387,121388,121582,121583,121733,121734,121747,121748,128961,128962,130150,130152,131072,131073,136794,136795,136798,136799,137350,137352,143721,143722,143724,143725,146765,146766,146767,146768,146788,146789,147214,147215,147271,147272,147633,147635,147636,147642,147938,147940,147948,147961,147962,147964,147974,147989,147998,148002,148151,148152,148499,148500,148837,148838,153041,153042,153540,153541,156306,156307,160508,160509,161007,161008,163559,163560,163840,163842,163936,163937,164611,164612,164790,164833,167411,167412,168384,168385,169211,171290,179643,179644,196608,196609,198541,198542,211846,211847,212540,212541,212563,212564,213244,213245,213536,213660,215604,215663,216287,219241,220188,220190,221880,221881,224858,224860,226377,226378,226465,226466,226658,226659,226997,226998,227335,227336,229376,229378,229472,229473,232141,232142,232640,232641,235406,235407,239608,239609,240107,240108,242659,242660,243109,243110,243426,243457,244947,244948,245730,245731,246685,246686,247714,247715,248028,248029,249022,251152,261687,261688,262144,262145,294889,294890,294912,294914,295008,295009,307236,307237,314800,314801,327680,327681,330036,330037,332633,332634,341144,341145,349129,349130,350955,350956,350980,350981,352282,352283,359035,359037,360448,360449,361771,361775,361777,361778,361786,361787,361789,361790,361792,361793,361795,361796,361799,361800,361890,361891,361893,361894,361896,361897,361899,361900,366270,366271,366279,366281,366305,366306,366323,366354,366360,366371,386991,393125,393215,393216") && 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:6462967d019bf86dbbd1929a624af4dc84b6bb19",
                "EMMC:/dev/block/bootdevice/by-name/boot:134217728:0722ceeaf7ff53d71c2186a2c25fd872a4358e15",
                package_extract_file("boot.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/boot:134217728:0722ceeaf7ff53d71c2186a2c25fd872a4358e15");

# ---- 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/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
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/storsec.mbn", "/dev/block/bootdevice/by-name/storsec");
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/dspso.bin", "/dev/block/bootdevice/by-name/dsp");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
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/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");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
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");
