getprop("ro.product.device") == "davinci" || abort("E3004: This package is for \"davinci\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V12.0.3.0.QFJEUXM:user/release-keys");
ui_print("Target: Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V12.0.4.0.QFJEUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V12.0.3.0.QFJEUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V12.0.4.0.QFJEUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V12.0.3.0.QFJEUXM:user/release-keys or Xiaomi/davinci_eea/davinci:10/QKQ1.190825.002/V12.0.4.0.QFJEUXM: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:c695793405869bf8f235a1e210895c120647efcd",
                      "EMMC:/dev/block/bootdevice/by-name/boot:134217728:ac85143ec265f0813b22693bfc7f071a279d800d") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:c695793405869bf8f235a1e210895c120647efcd\" or \"EMMC:/dev/block/bootdevice/by-name/boot:134217728:ac85143ec265f0813b22693bfc7f071a279d800d\" 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", "1176,1,575,728,742,775,782,784,785,1031,1036,1038,1039,1145,1146,1631,1632,2320,2321,2323,2325,2326,2327,2342,2343,2524,2525,2857,2967,2987,2998,3664,3695,3697,3698,3702,3703,3711,3712,3713,3714,5033,5237,5547,5817,8565,8595,9071,9072,9074,9480,9482,9483,10480,10482,16421,16422,16555,16556,19325,19327,25656,25658,32768,32770,32990,32991,34824,34825,34827,34829,34888,34889,35022,35024,35077,35078,35084,35085,35295,35296,35308,35932,35938,35939,35944,35945,36064,36067,37681,37682,39893,39894,39925,39926,40071,40072,40171,41587,43400,43401,43414,43415,43420,43421,43423,43424,45888,45889,46259,46260,46314,46317,46404,46405,46596,46597,49282,49283,49286,49287,49596,49597,49845,49846,50294,50295,51201,51202,51206,51207,51229,51230,52455,52456,52860,52861,52897,52898,56205,56207,59993,59994,60181,60182,61484,61485,61623,61624,61656,61657,62107,62108,62791,62792,64145,64146,64322,64323,65505,65506,65536,65537,68497,68498,68983,68984,73287,73288,76017,76018,77197,77198,77270,77271,77290,77293,80599,80600,83223,83224,84014,84015,84162,84163,84822,84823,84835,84836,84840,84841,85051,85054,85064,85065,90662,90663,92311,92312,92363,92364,92367,92370,92375,92376,94233,94234,94318,94319,94321,94322,94343,94344,95281,95284,95684,95687,95853,95854,95894,95895,97880,97881,97931,97932,98282,98283,98304,98306,98526,98527,99032,99033,99105,99106,99722,99723,103875,103876,103881,103882,104278,104279,105764,105765,107309,107310,107758,107759,107763,107764,107772,107773,107777,107778,107789,107790,107813,107814,109768,109769,109907,109908,110187,110190,110193,110194,111112,111113,111683,111684,115932,115935,118226,118227,118576,118577,121206,121207,121219,121220,121555,121556,123461,123462,123895,123896,124759,124870,125634,125635,126444,126483,128142,128147,128153,128154,128473,128474,128787,128788,128800,128801,128810,128813,128814,128815,128816,128817,128819,128820,128821,128822,128868,128869,128875,128876,128963,128964,128968,128969,128970,128972,128995,128996,129066,129067,129070,129075,129076,129077,129078,129079,129080,129081,130011,130012,130019,130020,130573,130575,131072,131073,131634,131636,131637,131638,131639,131640,131641,131642,131643,131644,131645,131646,131647,131648,131650,131651,131652,131655,132512,132514,132515,132516,132599,132600,132602,132603,132606,132608,132866,132867,132874,132876,133363,133365,133473,133474,133504,133505,133516,133517,133783,133784,133897,133898,133914,133916,133918,133919,142853,142854,150790,150791,152731,152732,153009,153098,154284,154537,155859,163842,164062,164063,164568,170664,170889,170930,170937,173037,175634,175736,175798,175799,177138,177451,179020,195911,196183,196229,196236,196609,197114,199312,202342,202352,203412,203413,213443,220990,221295,221796,221831,222113,222127,222131,222135,222136,222140,222143,222148,222149,222153,222155,222170,222171,222176,229378,229598,229599,230104,232455,232673,244670,245709,245722,245963,247445,248183,248216,249918,250088,250347,250634,251902,251944,252983,253026,253128,253285,255818,255851,256234,256391,256461,256496,256624,256832,259112,259113,260236,260269,260718,260763,262144,262145,262960,263034,264216,264238,265646,265918,266644,266646,270593,270595,270750,270751,274384,274385,278118,278161,279848,279849,280245,280246,280420,280421,281655,281677,281712,281713,286411,286412,288789,288790,289150,289151,289171,289172,289206,289207,289277,289278,291319,291320,294912,294914,295134,295135,300012,300053,300132,300659,303368,303375,304986,305005,305370,307534,309253,309254,316798,316839,319337,319541,319851,320121,326175,326231,327680,327681,331270,331271,331361,331528,344231,344272,344900,345199,355203,355258,355571,355870,358781,358782,359574,359576,360448,360449,368946,368987,369681,369744,375109,375243,381355,381356,385208,385209,386287,386317,393216,393217,397162,397163,402053,402054,407155,407211,409393,409394,409948,409949,410168,410169,411863,411893,411926,411929,413784,413785,413992,413993,418904,418905,419721,419725,419744,419745,419748,419749,419772,419773,419844,419845,419859,419860,419869,419870,419879,419880,419893,419894,419915,419916,419961,419963,419964,419965,419966,419967,419968,419969,419970,419971,419973,419974,419978,419979,419980,419981,419983,419984,419985,419986,419987,419988,419990,419991,419992,419993,419994,419995,419996,419997,419998,419999,420000,420001,420002,420003,420004,420005,420006,420007,420009,420010,420012,420013,420014,420017,420019,420021,420029,420030,420036,420038,420044,420045,420051,420052,420056,420057,421166,421167,421272,421274,421284,421286,421304,421306,421346,421347,421349,421364,421369,425985,426490,428749,428888,428921,428922,428923,429365,429368,432396,432397,432759,432760,432812,432813,434213,434214,435476,435477,436975,436977,437454,437455,443626,443627,443686,443687,443764,443765,443891,443892,444090,444091,444097,445631,450936,450937,451947,451948,452006,452007,458249,458250,458580,458581,458588,458589,458752,458753,459792,459793,462455,462456,462464,462465,462478,462479,462856,462857,462864,462865,465067,465068,473140,473141,474369,474370,474399,474400,474867,474868,476341,476342,476992,476993,477086,477089,477146,477147,477152,477153,478975,478976,479101,479102,479113,479114,486826,486827,489518,489519,491069,491072,491405,491406,491520,491521,493850,493851,497964,497965,500826,500827,507477,507478,508013,508014,524288,524289,529443,529446,530501,530504,530772,530773,542665,542666,545372,545373,545410,545411,551181,551182,557056,557057,565158,565159,574264,574265,574282,574283,574320,574321,574348,574349,574359,574360,574362,574363,574879,574880,576575,576576,576580,576581,576642,576643,589824,589825,590331,590332,590775,590776,590848,590849,590853,590854,590944,590945,593718,593719,593734,593735,593892,593893,598905,600521,600675,600676,600684,600685,600727,600728,600735,600736,600765,600768,602936,602937,603499,603500,603582,603583,603897,603900,603913,603914,608250,608251,608258,608259,608263,608264,608324,608325,614564,614565,615204,615205,615569,615570,615582,615583,622476,622477,622592,622593,623384,623385,630550,630551,638601,638602,650489,650490,651146,651147,651153,651154,651158,651159,651287,651288,651295,651296,651299,651300,651304,651305,651316,651317,655360,655361,666388,666389,682070,682071,683482,683483,688128,688129,690371,690372,697614,697615,697621,697622,697632,697633,697637,697638,697642,697643,697655,697656,697662,697663,697665,697666,697671,697672,700782,700783,700801,700802,700806,700807,700831,700832,700840,700841,700848,700849,700858,700859,700868,700869,701032,701033,701034,701035,701036,701037,701038,701039,701075,701076,701077,701078,701081,701083,701084,701085,702015,702016,705569,705570,706425,706426,711128,711129,712316,712319,712768,712769,713140,713141,714626,714627,714717,714719,714721,714722,714724,714725,714727,714728,714730,714731,714733,714734,714736,714737,714741,714742,714746,714747,714752,714753,714757,714758,714776,714777,714796,714797,714802,714803,714822,714823,714838,714839,714843,714844,714860,714861,714866,714867,714885,714886,714899,714900,714904,714905,714922,714923,714928,714929,714948,714949,714963,714964,714966,714967,714969,714970,714972,714973,714975,714976,714978,714979,714981,714982,714984,714985,714987,714988,714990,714991,714993,714995,715290,715291,715331,715332,716650,716651,718145,718146,720896,720897,722039,722040,740686,740688,743447,743448,743619,743620,743660,743661,743785,743786,745034,745035,746084,746085,753664,753665,755219,755220,755644,755645,760508,760509,767490,767491,783731,783732,784221,784222,785597,785598,786432,786433,787511,787512,789393,789394,789819,789820,819200,819202,819422,819423,821473,821474,836785,836786,836816,836817,839379,839380,839383,839384,839656,839659,839680,839681,839696,839699,849481,851969,852474,853633,854009,854010,854013,854014,854033,854034,854091,854093,854102,854103,854228,854229,854335,854336,854337,854340,884736,884738,884958,884959,903007,917316,917503,917504") == "e2043586a2b2c798e5ffef0ef8afe3ffebc28d92" || 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", "1176,1,575,728,742,775,782,784,785,1031,1036,1038,1039,1145,1146,1631,1632,2320,2321,2323,2325,2326,2327,2342,2343,2524,2525,2857,2967,2987,2998,3664,3695,3697,3698,3702,3703,3711,3712,3713,3714,5033,5237,5547,5817,8565,8595,9071,9072,9074,9480,9482,9483,10480,10482,16421,16422,16555,16556,19325,19327,25656,25658,32768,32770,32990,32991,34824,34825,34827,34829,34888,34889,35022,35024,35077,35078,35084,35085,35295,35296,35308,35932,35938,35939,35944,35945,36064,36067,37681,37682,39893,39894,39925,39926,40071,40072,40171,41587,43400,43401,43414,43415,43420,43421,43423,43424,45888,45889,46259,46260,46314,46317,46404,46405,46596,46597,49282,49283,49286,49287,49596,49597,49845,49846,50294,50295,51201,51202,51206,51207,51229,51230,52455,52456,52860,52861,52897,52898,56205,56207,59993,59994,60181,60182,61484,61485,61623,61624,61656,61657,62107,62108,62791,62792,64145,64146,64322,64323,65505,65506,65536,65537,68497,68498,68983,68984,73287,73288,76017,76018,77197,77198,77270,77271,77290,77293,80599,80600,83223,83224,84014,84015,84162,84163,84822,84823,84835,84836,84840,84841,85051,85054,85064,85065,90662,90663,92311,92312,92363,92364,92367,92370,92375,92376,94233,94234,94318,94319,94321,94322,94343,94344,95281,95284,95684,95687,95853,95854,95894,95895,97880,97881,97931,97932,98282,98283,98304,98306,98526,98527,99032,99033,99105,99106,99722,99723,103875,103876,103881,103882,104278,104279,105764,105765,107309,107310,107758,107759,107763,107764,107772,107773,107777,107778,107789,107790,107813,107814,109768,109769,109907,109908,110187,110190,110193,110194,111112,111113,111683,111684,115932,115935,118226,118227,118576,118577,121206,121207,121219,121220,121555,121556,123461,123462,123895,123896,124759,124870,125634,125635,126444,126483,128142,128147,128153,128154,128473,128474,128787,128788,128800,128801,128810,128813,128814,128815,128816,128817,128819,128820,128821,128822,128868,128869,128875,128876,128963,128964,128968,128969,128970,128972,128995,128996,129066,129067,129070,129075,129076,129077,129078,129079,129080,129081,130011,130012,130019,130020,130573,130575,131072,131073,131634,131636,131637,131638,131639,131640,131641,131642,131643,131644,131645,131646,131647,131648,131650,131651,131652,131655,132512,132514,132515,132516,132599,132600,132602,132603,132606,132608,132866,132867,132874,132876,133363,133365,133473,133474,133504,133505,133516,133517,133783,133784,133897,133898,133914,133916,133918,133919,142853,142854,150790,150791,152731,152732,153009,153098,154284,154537,155859,163842,164062,164063,164568,170664,170889,170930,170937,173037,175634,175736,175798,175799,177138,177451,179020,195911,196183,196229,196236,196609,197114,199312,202342,202352,203412,203413,213443,220990,221295,221796,221831,222113,222127,222131,222135,222136,222140,222143,222148,222149,222153,222155,222170,222171,222176,229378,229598,229599,230104,232455,232673,244670,245709,245722,245963,247445,248183,248216,249918,250088,250347,250634,251902,251944,252983,253026,253128,253285,255818,255851,256234,256391,256461,256496,256624,256832,259112,259113,260236,260269,260718,260763,262144,262145,262960,263034,264216,264238,265646,265918,266644,266646,270593,270595,270750,270751,274384,274385,278118,278161,279848,279849,280245,280246,280420,280421,281655,281677,281712,281713,286411,286412,288789,288790,289150,289151,289171,289172,289206,289207,289277,289278,291319,291320,294912,294914,295134,295135,300012,300053,300132,300659,303368,303375,304986,305005,305370,307534,309253,309254,316798,316839,319337,319541,319851,320121,326175,326231,327680,327681,331270,331271,331361,331528,344231,344272,344900,345199,355203,355258,355571,355870,358781,358782,359574,359576,360448,360449,368946,368987,369681,369744,375109,375243,381355,381356,385208,385209,386287,386317,393216,393217,397162,397163,402053,402054,407155,407211,409393,409394,409948,409949,410168,410169,411863,411893,411926,411929,413784,413785,413992,413993,418904,418905,419721,419725,419744,419745,419748,419749,419772,419773,419844,419845,419859,419860,419869,419870,419879,419880,419893,419894,419915,419916,419961,419963,419964,419965,419966,419967,419968,419969,419970,419971,419973,419974,419978,419979,419980,419981,419983,419984,419985,419986,419987,419988,419990,419991,419992,419993,419994,419995,419996,419997,419998,419999,420000,420001,420002,420003,420004,420005,420006,420007,420009,420010,420012,420013,420014,420017,420019,420021,420029,420030,420036,420038,420044,420045,420051,420052,420056,420057,421166,421167,421272,421274,421284,421286,421304,421306,421346,421347,421349,421364,421369,425985,426490,428749,428888,428921,428922,428923,429365,429368,432396,432397,432759,432760,432812,432813,434213,434214,435476,435477,436975,436977,437454,437455,443626,443627,443686,443687,443764,443765,443891,443892,444090,444091,444097,445631,450936,450937,451947,451948,452006,452007,458249,458250,458580,458581,458588,458589,458752,458753,459792,459793,462455,462456,462464,462465,462478,462479,462856,462857,462864,462865,465067,465068,473140,473141,474369,474370,474399,474400,474867,474868,476341,476342,476992,476993,477086,477089,477146,477147,477152,477153,478975,478976,479101,479102,479113,479114,486826,486827,489518,489519,491069,491072,491405,491406,491520,491521,493850,493851,497964,497965,500826,500827,507477,507478,508013,508014,524288,524289,529443,529446,530501,530504,530772,530773,542665,542666,545372,545373,545410,545411,551181,551182,557056,557057,565158,565159,574264,574265,574282,574283,574320,574321,574348,574349,574359,574360,574362,574363,574879,574880,576575,576576,576580,576581,576642,576643,589824,589825,590331,590332,590775,590776,590848,590849,590853,590854,590944,590945,593718,593719,593734,593735,593892,593893,598905,600521,600675,600676,600684,600685,600727,600728,600735,600736,600765,600768,602936,602937,603499,603500,603582,603583,603897,603900,603913,603914,608250,608251,608258,608259,608263,608264,608324,608325,614564,614565,615204,615205,615569,615570,615582,615583,622476,622477,622592,622593,623384,623385,630550,630551,638601,638602,650489,650490,651146,651147,651153,651154,651158,651159,651287,651288,651295,651296,651299,651300,651304,651305,651316,651317,655360,655361,666388,666389,682070,682071,683482,683483,688128,688129,690371,690372,697614,697615,697621,697622,697632,697633,697637,697638,697642,697643,697655,697656,697662,697663,697665,697666,697671,697672,700782,700783,700801,700802,700806,700807,700831,700832,700840,700841,700848,700849,700858,700859,700868,700869,701032,701033,701034,701035,701036,701037,701038,701039,701075,701076,701077,701078,701081,701083,701084,701085,702015,702016,705569,705570,706425,706426,711128,711129,712316,712319,712768,712769,713140,713141,714626,714627,714717,714719,714721,714722,714724,714725,714727,714728,714730,714731,714733,714734,714736,714737,714741,714742,714746,714747,714752,714753,714757,714758,714776,714777,714796,714797,714802,714803,714822,714823,714838,714839,714843,714844,714860,714861,714866,714867,714885,714886,714899,714900,714904,714905,714922,714923,714928,714929,714948,714949,714963,714964,714966,714967,714969,714970,714972,714973,714975,714976,714978,714979,714981,714982,714984,714985,714987,714988,714990,714991,714993,714995,715290,715291,715331,715332,716650,716651,718145,718146,720896,720897,722039,722040,740686,740688,743447,743448,743619,743620,743660,743661,743785,743786,745034,745035,746084,746085,753664,753665,755219,755220,755644,755645,760508,760509,767490,767491,783731,783732,784221,784222,785597,785598,786432,786433,787511,787512,789393,789394,789819,789820,819200,819202,819422,819423,821473,821474,836785,836786,836816,836817,839379,839380,839383,839384,839656,839659,839680,839681,839696,839699,849481,851969,852474,853633,854009,854010,854013,854014,854033,854034,854091,854093,854102,854103,854228,854229,854335,854336,854337,854340,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", "326,1,271,602,610,620,621,702,703,2409,2410,2474,2475,2477,2488,2726,2727,2732,2733,2735,2736,3244,3245,3253,3254,3732,3782,4183,4184,14567,14568,14686,14687,15455,15456,16088,16089,17065,17071,19324,19325,20974,20975,22246,22247,32768,32770,32864,32865,44059,44061,47140,47141,65536,65537,66043,66044,66495,66496,71489,71490,84022,84023,93300,93301,94323,94325,94342,94344,94823,94824,94899,94900,98304,98306,98400,98401,115479,115482,115500,115501,115546,115547,115565,115566,115568,115569,115655,115656,115662,115663,115688,115689,115724,115725,115917,115918,115942,115945,116174,116175,116188,116189,120418,120419,124946,124948,131072,131073,131590,131591,131593,131594,132150,132152,138534,138535,138537,138538,141566,141567,141568,141569,141591,141592,142017,142018,142074,142075,142416,142420,142423,142425,142426,142432,142751,142753,142758,142768,142777,142778,142780,142784,142933,142934,143687,143688,148129,148130,152413,152414,152805,152806,155682,155683,160120,160121,163840,163842,163936,163937,165001,165002,165393,165394,168049,168050,168557,168558,168623,168624,171475,171476,172453,172454,173288,174835,176681,176743,178713,178778,182032,182065,184345,184346,184554,184587,196608,196609,198593,198626,201049,201259,202150,202151,205144,205177,205976,206135,206684,206714,210757,210758,210997,211272,212645,212646,212668,212669,213353,216247,216251,219575,219592,219594,221536,221537,224049,224051,225910,225911,226003,226004,226197,226198,226938,226939,229376,229378,229472,229473,231982,231983,236266,236267,236658,236659,239535,239536,243973,243974,248252,248253,248644,248645,251300,251301,251808,251809,251874,251875,253722,253723,254517,254518,255568,255569,256597,256598,256911,256912,257887,259311,261484,261561,262144,262145,264452,264523,268262,268303,270460,270461,294912,294914,295008,295009,303476,303477,309385,309426,319101,319102,326681,326682,327269,327310,327680,327681,340352,340353,341054,341353,351067,351068,353592,353633,358590,358591,359535,359536,359560,359561,360448,360449,361366,361367,368400,368402,370955,370959,370980,370981,373483,373484,373492,373494,373518,373519,373544,373575,373581,373592,386991,393125,393215,393216") == "87a74f612a1edfc9b32378fbea946ab8a489c66d" || 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", "326,1,271,602,610,620,621,702,703,2409,2410,2474,2475,2477,2488,2726,2727,2732,2733,2735,2736,3244,3245,3253,3254,3732,3782,4183,4184,14567,14568,14686,14687,15455,15456,16088,16089,17065,17071,19324,19325,20974,20975,22246,22247,32768,32770,32864,32865,44059,44061,47140,47141,65536,65537,66043,66044,66495,66496,71489,71490,84022,84023,93300,93301,94323,94325,94342,94344,94823,94824,94899,94900,98304,98306,98400,98401,115479,115482,115500,115501,115546,115547,115565,115566,115568,115569,115655,115656,115662,115663,115688,115689,115724,115725,115917,115918,115942,115945,116174,116175,116188,116189,120418,120419,124946,124948,131072,131073,131590,131591,131593,131594,132150,132152,138534,138535,138537,138538,141566,141567,141568,141569,141591,141592,142017,142018,142074,142075,142416,142420,142423,142425,142426,142432,142751,142753,142758,142768,142777,142778,142780,142784,142933,142934,143687,143688,148129,148130,152413,152414,152805,152806,155682,155683,160120,160121,163840,163842,163936,163937,165001,165002,165393,165394,168049,168050,168557,168558,168623,168624,171475,171476,172453,172454,173288,174835,176681,176743,178713,178778,182032,182065,184345,184346,184554,184587,196608,196609,198593,198626,201049,201259,202150,202151,205144,205177,205976,206135,206684,206714,210757,210758,210997,211272,212645,212646,212668,212669,213353,216247,216251,219575,219592,219594,221536,221537,224049,224051,225910,225911,226003,226004,226197,226198,226938,226939,229376,229378,229472,229473,231982,231983,236266,236267,236658,236659,239535,239536,243973,243974,248252,248253,248644,248645,251300,251301,251808,251809,251874,251875,253722,253723,254517,254518,255568,255569,256597,256598,256911,256912,257887,259311,261484,261561,262144,262145,264452,264523,268262,268303,270460,270461,294912,294914,295008,295009,303476,303477,309385,309426,319101,319102,326681,326682,327269,327310,327680,327681,340352,340353,341054,341353,351067,351068,353592,353633,358590,358591,359535,359536,359560,359561,360448,360449,361366,361367,368400,368402,370955,370959,370980,370981,373483,373484,373492,373494,373518,373519,373544,373575,373581,373592,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:c695793405869bf8f235a1e210895c120647efcd",
                "EMMC:/dev/block/bootdevice/by-name/boot:134217728:ac85143ec265f0813b22693bfc7f071a279d800d",
                package_extract_file("boot.img.p")) ||
    abort("E3008: Failed to apply patch to EMMC:/dev/block/bootdevice/by-name/boot:134217728:ac85143ec265f0813b22693bfc7f071a279d800d");

# ---- 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/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
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/imagefv.elf", "/dev/block/bootdevice/by-name/imagefv");
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/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/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/imagefv.elf", "/dev/block/bootdevice/by-name/imagefvbak");
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");
