Wie funktioniert (F)OTA aus technischer Sicht?

Dieses Thema im Forum "Android OS Entwicklung / Customize" wurde erstellt von Lopder, 02.08.2012.

  1. Lopder, 02.08.2012 #1
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Hallo

    Weiß jemand von euch wie ein OTA-update funktioniert ? Jetzt nicht aus Benutzer sicht. :).
    Mein Frage ist aus technischer Sicht. Also da wird irgend eine datei runter geladen und installiert. Aber wie ?
    Weil es wird ja da auch was am System geupdatet oder nicht ? Das ist ja mehr als ein App update?
    Wer installiert das ? Der Rom Manager ? Und warum kann eine App das System nicht verändern ?

    Grüße
     
  2. koalalump, 02.08.2012 #2
    koalalump

    koalalump Gast

  3. Lopder, 02.08.2012 #3
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Hmm ehrlich gesagt nö :( da steht nur blabla und es wird mit Fachwörter herumgeschmissen ...

    Mich intressiert was passiert konkret bei einem Android-Handy ?
    Ist das ein Funktion von Android oder vom Handy ?

    ------------------
    Nach dem Aufruf einer z. B. "Updatedienst" genannten Funktion wird die neue Firmware über die Luftschnittstelle übertragen und anschließend installiert. Dabei kann es notwendig sein, das Handset neu zu starten oder die SIM-Karte neu anzumelden.
    ------------------

    Wie wird der Aufruf erzeugt ?
    Wer installiert ? Service ?
    Wieso kann was installiert werden was sonst nicht installiert werden kann ?

    Und vor allem was wird geupdatet ? das gesammt system ? gibt es delta- updates ?
    Da gibts leider auch schon unterschiedliche Aussagen. Einige sagen ja andere nein. Aber ich weiß nicht wo ich suchen soll, weil das niergends wo von Grund auf mal erklärt wird ... :bored:
     
  4. Thyrion, 03.08.2012 #4
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,845
    Erhaltene Danke:
    2,450
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Ich kann es jetzt nur am Beispiel des HTC Desire etwas genauer beschreiben, aber das dürfte bei anderen ähnlich sein.

    Das Handy überprüft über einen Webservice, ob ein OTA-Update bereitsteht. Dazu werden einige Daten (aktuelle Firmware-Version, Kennung des Handy-Branding (auch freie Geräte haben hier eine Kennung), Modell etc) übertragen und die Antwort ausgewertet (in dieser ist dann auch eine URL für den Download enthalten).

    Das Update wird dann herunter geladen und (hier bin ich nicht 100% sicher, aber auf Grund der Größe kann ich mir kaum etwas anderes vorstellen) auf SD-Karte zwischengespeichert und das Handy im Recovery-Modus neu gestartet.

    Dieser erkennt dann das vorhanden sein eines Updates und startet den Flashvorgang. Zunächst wird geprüft, ob das Update auch für das Gerät geeignet ist, ob genug freier Platz vorhanden ist. In dem Update sind allerdings nicht vollständige Dateien enthalten, sondern nur Differenzbilder (die mittels imgdiff oder bsdiff erzeugt wurden). Für jede zu ändernde Datei wird dann per Hashwert (ich vermute MD5) geprüft, ob die vorhandene Datei die richtige ist (oder bereits gepatcht wurde). Erst wenn für alle Dateien diese Prüfung erfolgreich verlaufen ist, werden die Differenzbilder angewendet und die Dateien ersetzt.

    Manche Dateien werden auch einfach komplett ersetzt oder gelöscht (je nachdem welche Änderung benötigt wird). Danach noch die Dateiberechtigungen setzen und evtl. Bootloader/HBOOT, Baseband/Radio flashen.

    Ist der Flash erfolgreich, bootet das Handy neu und du das Update wurde installiert/geflasht.



    Als Beispiel hier mal das Updater-Skript eines OTA-Updates vom Desire, wo du die Abläufe innerhalb des Recoveries nachvollziehen kannst.
    Code:
    # Script Version: 0.9
    
    mount("MTD", "system", "/system");
    mount("MTD", "userdata", "/data");
    assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "htc_wwe/htc_bravo/bravo/bravo:2.2/FRF91/226611:user/release-keys" ||
           file_getprop("/system/build.prop", "ro.build.fingerprint") == "htc_wwe/htc_bravo/bravo/bravo:2.2/FRF91/263770:user/release-keys");
    assert(getprop("ro.product.device") == "bravo" ||
           getprop("ro.build.product") == "bravo");
    
    # Start checking data partition
    
    ui_print("Checking data partition free space...");
    mount("MTD", "userdata", "/data");
    package_extract_dir("notifyapp", "/data/app");
    package_extract_file("checkspace", "/tmp/checkspace");
    set_perm(0, 0, 06755, "/tmp/checkspace");
    run_program("/tmp/checkspace", "-f", "/data", "26214400", "skip", "FOTAERRORMESSAGES");
    delete("/data/app/HtcFotaNotify.apk");
    delete_recursive("/data/data/com.htc.fotafailnotify/");
    
    # End checking data partition
    
    ui_print("Copying fotaBoot to /data/system for customize reload...");
    mount("MTD", "userdata", "/data");
    package_extract_file("fotaBoot", "/data/system/fotaBoot");
    ui_print("Verifying current system...");
    show_progress(0.100000, 0);
    assert(apply_patch_check("/system/app/AccountSyncManager.apk", "7e807f5cfcf0846b3912f532d0b06038e1df75c5", "4d3922776d89af26769536fcbdb708ae48ec5d17"));
    set_progress(0.001145);
    assert(apply_patch_check("/system/app/AccountSyncManager.odex", "22f2afa71cea158214d95e21c034a7c31cf644dc", "076d6dc7b8b2cb2b6d8d2ff10d3d925d7d2f7923"));
    set_progress(0.001530);
    assert(apply_patch_check("/system/app/AppSharing.apk", "7438fa9de36d9ed6dff08b9cb916e7f4fa6ca58c", "d58d5573dd23deb8809766d0e56e0a7b3f91b296"));
    set_progress(0.002781);
    assert(apply_patch_check("/system/app/AppSharing.odex", "d263953be3c8ab369bb53176d756f505f20cdc3e", "f47338c1d2a378781825224e43bee5a181cda150"));
    set_progress(0.003012);
    assert(apply_patch_check("/system/app/ApplicationsProvider.odex", "cd3e29a7c8d3813ec9b956beee0fab8e9f684c1f", "cb2e09ada6ad7d15110959b540936f589bbf4410"));
    set_progress(0.003148);
    assert(apply_patch_check("/system/app/Bluetooth.apk", "644401cb4a35a40eb5b465fe6229dfad918bae5c", "9a21334cc33086fe5d651a15aad39e45d31692a0"));
    set_progress(0.004282);
    assert(apply_patch_check("/system/app/Bluetooth.odex", "02333aaec0602a022ddcf54755dcaeed2fe04e9f", "eedf6cb7280e239e358d1086d0a4117d17608414"));
    set_progress(0.005750);
    assert(apply_patch_check("/system/app/BrcmBluetoothServices.odex", "1cf6e544f092e962766c935d76f61381f7f3bdcc", "163b6926068f4d671ba0373de964cf959de6957b"));
    set_progress(0.005801);
    assert(apply_patch_check("/system/app/Browser.apk", "b4d8b21214dc6ab611e0c92ed3e6c0ba4db77f58", "7483b1286a4aeca99e07765350a126b327d8791c"));
    set_progress(0.010744);
    assert(apply_patch_check("/system/app/Browser.odex", "1d088dde86ea04bffd5384361a0c2d7e0b5a8f4d", "fcd083534017142f348bdfe98e0adb3e682074c7"));
    set_progress(0.015465);
    assert(apply_patch_check("/system/app/Calculator.odex", "79b46a0ee2ce266b8e31e9088035cba3dd5e12d3", "84c1ffc2c1d33293f38ba884dcc6990f0ac8f484"));
    set_progress(0.016128);
    assert(apply_patch_check("/system/app/Calendar.apk", "e3e9df845a25678de63773f160d3fe152e4857ce", "9bbd119b1a25c3d5efa2695dda28931746a41347"));
    set_progress(0.021485);
    assert(apply_patch_check("/system/app/Calendar.odex", "d8bdf0b68f28c4ee698f747b3b206a400d3977b4", "44a88e64d1e26c6322475243225ed283ec52d6c3"));
    set_progress(0.026117);
    assert(apply_patch_check("/system/app/CalendarProvider.odex", "943e571ed40f4b314331d2eb3f9a4fa4cd3a0406", "83c01aac4563b20df789b775319e9cb17dcc3524"));
    set_progress(0.031786);
    assert(apply_patch_check("/system/app/CertInstaller.apk", "edd42d84caf5bd25a676d85507bf3b7c5b940fd2", "e614c2780aafeb0dc61564ba0c91460838261c71"));
    set_progress(0.032116);
    assert(apply_patch_check("/system/app/CertInstaller.odex", "d0bece9a78efcc5549b729fda2b6436005fe40f6", "18f1720c37d5b9bda8effcdb990128e532867221"));
    set_progress(0.032364);
    assert(apply_patch_check("/system/app/CheckinProvider.apk", "00904576ac1d276d67137175b84c8c8e41850e2e", "481ad1de7c5f31469b6ac3b0e5be8b72c6eb80e6"));
    set_progress(0.032393);
    assert(apply_patch_check("/system/app/CheckinProvider.odex", "9dfb7d7eb4bd6a39de092c85316dbf9f4e5ae17a", "1f266194f5aeb44372eef3087b88b63a1cd85abb"));
    set_progress(0.033001);
    assert(apply_patch_check("/system/app/Clicker.odex", "7dea1d819e251b9bed5ad91ddeef5b33593df244", "8f882b28a0b785d3c13aa327a841f02ee545bbee"));
    set_progress(0.033563);
    assert(apply_patch_check("/system/app/ContactsProvider.apk", "a04643e71a85e13b74a2bb714c22c04608b52444", "ee65d3068ec6167e88ccbd9a64ea45856d5da3ab"));
    set_progress(0.033767);
    assert(apply_patch_check("/system/app/ContactsProvider.odex", "1e4b4ca83cce50c903cdd61abcec99c393efa2c5", "f37c163f8ff9961e3b4b32b768796dad7f43b6cb"));
    set_progress(0.037787);
    assert(apply_patch_check("/system/app/CustomizationSettingsProvider.odex", "670836bd1f10e19c8cd231301dcddda94bc8c034", "25844c45edc1f16e9af40bc1145cac3fdd58eb0e"));
    set_progress(0.037834);
    assert(apply_patch_check("/system/app/CustomizationSetup.odex", "6890f7906e64d881b8da5227ceab3bd47361b6d0", "7f86184b56fe2478e45f02a56d4e3ed88999850c"));
    set_progress(0.038347);
    assert(apply_patch_check("/system/app/DCSImpl.odex", "1068a2a84020e381b21f99e3eb6272fc3c46b411", "fde322c9254d5ab06cb840cf1030100ca2528a7e"));
    set_progress(0.038488);
    assert(apply_patch_check("/system/app/DCSStock.odex", "e25a96171fdcc200d31bf0d85590f9f171c9cbd9", "c5a232b2dc0de6fedbca4c9f06028497cf5fc343"));
    set_progress(0.038736);
    assert(apply_patch_check("/system/app/DCSUtility.odex", "e56ad4ab924d58e13d8bb142c6bde04ab4f42d08", "85c79cb6bd14bac69850b5d92cc195736840ca75"));
    set_progress(0.038903);
    assert(apply_patch_check("/system/app/DebugTool.odex", "71151cfb519ab34f5499eeeb8baef24ae8265d0b", "730f914aa22fb3044c78902a84d14cbb3b08f390"));
    set_progress(0.039022);
    assert(apply_patch_check("/system/app/DefaultContainerService.odex", "545e38a3b1c1320e8336dc25b5af691fdc88d29a", "365a64d539b860a6860338e313c02e342731590b"));
    set_progress(0.039105);
    assert(apply_patch_check("/system/app/DownloadProvider.apk", "d31826810a56bf26950f8ffe8ce41b9911ee628b", "7425d2d9c07e0b8409c4cd8d7ece2d1eccd830e2"));
    set_progress(0.039447);
    assert(apply_patch_check("/system/app/DownloadProvider.odex", "38aa63928dda7358bef62267354caa57518763f5", "78df092c63b3bd62034ae456488502343b65c1ab"));
    set_progress(0.040156);
    assert(apply_patch_check("/system/app/DrmProvider.odex", "3ae8dcf1e13f22ee2c39760480d4307d5b4597e5", "473d37ed17b8ce6c29faabac8bae9ddaddcee5e3"));
    set_progress(0.040501);
    assert(apply_patch_check("/system/app/Facebook.apk", "0d3228f8e366757129ef9a1dd8e268e1d6bdb0e6", "7e13aab7c512bd25c5c88386917ce9a5be307e4f"));
    set_progress(0.047377);
    assert(apply_patch_check("/system/app/Facebook.odex", "1372baf553775838dd0359dcdfcfc6b8f55d7a7c", "ce9f717078f74a991bed763f83f19cb6509d2dc3"));
    set_progress(0.053346);
    assert(apply_patch_check("/system/app/FieldTest.odex", "db90cdfd5899d67f3649e70eab817ea8f61159ea", "6758f602aa6a8db9138db1bcb0b7d35202bc1355"));
    set_progress(0.053936);
    assert(apply_patch_check("/system/app/FilePicker.apk", "3a7d71c537363b1e38c3f61df78c10b1fe294bc0", "fc78428af39458a5448f333c4ee1bffd1bc77907"));
    set_progress(0.054152);
    assert(apply_patch_check("/system/app/FilePicker.odex", "f5be3c62366d1e3ab0a8a1e297564daa44a8f3ea", "b29d1784744db0c625f0468899f145d378ff03e3"));
    set_progress(0.054178);
    assert(apply_patch_check("/system/app/Flashlight.apk", "a1b70e721df7bdd8c4fb81c900decf49864a5d29", "28386e5ea5a8fd16c1d78f5ef54ed93322e597ed"));
    set_progress(0.058634);
    assert(apply_patch_check("/system/app/Flashlight.odex", "4b1b1876c1e78d2757947646a0f3c8637636e6e4", "0655aa355fa0b6f609e63f73961259d6f9442a0c"));
    set_progress(0.058777);
    assert(apply_patch_check("/system/app/Flickr.apk", "60d284ece402ad14f9998d45bc35ef184b2425a8", "1209ba1708256e59fe1b8d4f416276b871e7ae08"));
    set_progress(0.059559);
    assert(apply_patch_check("/system/app/Flickr.odex", "06fb60efc9ff59c948e35242792bcd47baab4bc1", "1b8c2202f8ce98c1961a5a2e7db63f00cfe0618f"));
    set_progress(0.060812);
    assert(apply_patch_check("/system/app/FriendStream.apk", "8692a695d5f7ccef57ca6d35cf0b9bebbb126a52", "e5d2e4b6f22a6c9dc06dd2b961d8fe8ba24fb2e2"));
    set_progress(0.061340);
    assert(apply_patch_check("/system/app/FriendStream.odex", "748ddf31846824378a399373cb7706542f29e8b8", "cd08cbd40f5745c5750362be3fe9cce8fcd195cc"));
    set_progress(0.061957);
    assert(apply_patch_check("/system/app/GenieWidget.odex", "e0ffc773b4b753874cfd7d9d37f4e9c1fc8c49b5", "bb03be1a69cca5624bdf18bff8edabbf8629668f"));
    set_progress(0.064835);
    assert(apply_patch_check("/system/app/Gmail.odex", "aa5160f44177629bfa9a649365412843edad7ba0", "bb64a8fd6d2a3b93bbcadd9835c4eaf72bf216bd"));
    set_progress(0.069136);
    assert(apply_patch_check("/system/app/GoogleCalendarSyncAdapter.odex", "cebe8780bfcdc8a82ad99bb22002fe1c951c24b8", "5711b8979e8a69755254a00de8ee2364121e2417"));
    set_progress(0.070675);
    assert(apply_patch_check("/system/app/GoogleContactsSyncAdapter.odex", "a04fdbea1283544de78a40b68eae30c393e776f0", "4a4c65a3118d517a38f1651e7a5cd67013d04e63"));
    set_progress(0.072467);
    assert(apply_patch_check("/system/app/GoogleFeedback.odex", "389fd0ff7800954a01d842c254491a77fa2ff0be", "7024ea2fd4d0025dfb8520cc3e4ad235a245d90c"));
    set_progress(0.072993);
    assert(apply_patch_check("/system/app/GooglePartnerSetup.odex", "b4992f79ce3f60af2e7faf7ebe9f2215bfed73df", "6fe5df839d153dc6dfe918a30f18cd3581a3ebfd"));
    set_progress(0.073058);
    assert(apply_patch_check("/system/app/GoogleQuickSearchBox.odex", "d9fd14204876281ec383e3ece4415d40de705875", "b24552009d6f19ef0232f951f4afaebaad894bb1"));
    set_progress(0.075224);
    assert(apply_patch_check("/system/app/GoogleServicesFramework.odex", "bf45f449f76066fb6cad891ffae962fc32587826", "99992563f0764604d17e1e41ee8c59dc48b4066c"));
    set_progress(0.082781);
    assert(apply_patch_check("/system/app/HTCAlbum.apk", "a4a09534b3b473d3566c4d6fb099666420d73d09", "bf2bf8abfc357d4d49e710e1b97051200e93352d"));
    set_progress(0.086211);
    assert(apply_patch_check("/system/app/HTCAlbum.odex", "0ef63a45cc01f153b88f76361f9503dc3f6ab21c", "94a6168c3bb32483c123779cd53a45d5ab21620e"));
    set_progress(0.094343);
    assert(apply_patch_check("/system/app/HTCCamera.apk", "f0b8afa8199ef85923faf81308b3d677f57ec892", "221832ce1ddf147f7e2aeb83efde928274af26e2"));
    set_progress(0.098105);
    assert(apply_patch_check("/system/app/HTCCamera.odex", "007d734249de79b6fdcfda4bb6aba4255d10aa7d", "1497c8b3bf2369d8c4f55213827da8ace7e3f2be"));
    set_progress(0.102179);
    assert(apply_patch_check("/system/app/HTCSetupWizard.apk", "b6b6d6b121178832fc41d1983d6bcba44758c184", "6310d837e1115d2796d64ea8823806fed8fed095"));
    set_progress(0.110947);
    assert(apply_patch_check("/system/app/HTCSetupWizard.odex", "6b208152a1f30c93ed12415606f031b14da6e7ab", "5e8afa53d0129a42f550beaf1583e8fe68399841"));
    set_progress(0.112182);
    assert(apply_patch_check("/system/app/HTC_IME.apk", "ef030cb3898dc1ee56dd2cf1eb07843dd845dcb5", "88507030ee0483de6bb00f3319c3d80d946eed2c"));
    set_progress(0.162428);
    assert(apply_patch_check("/system/app/HTC_IME.odex", "ddee8f428cd45b0ca2d4714b8427ea9774cca66e", "49668494d377e32f1412839b9d290790674e4ff5"));
    set_progress(0.168221);
    assert(apply_patch_check("/system/app/HTMLViewer.odex", "f64ea700e3fba4e9345188b2bbd0ae51b125cd04", "f9c3e287f5e3db43fc6c15052180ea038a6afa07"));
    set_progress(0.168268);
    assert(apply_patch_check("/system/app/HtcAddProgramWidget.apk", "ea9768d6c19a8b9e7ad047f94bb9d49dc7efe0fe", "f38f86e554e3372ebea2bfe5f7d916337f571a63"));
    set_progress(0.168789);
    assert(apply_patch_check("/system/app/HtcAddProgramWidget.odex", "a3536e2460c5cd99c4b2c732d61b66863f580f4e", "5f4d49c916f37653939518de704f805acddb8c31"));
    set_progress(0.169394);
    assert(apply_patch_check("/system/app/HtcCalculatorWidget.odex", "2eca3142c548e9ba2077d8da19d176bb87e7c0bd", "569a75218ff215a33f1d160832ef7be89fa394f9"));
    set_progress(0.170155);
    assert(apply_patch_check("/system/app/HtcClockWidget.apk", "568b79c20b5e510f6b0bc08ed01c38e9aff8196f", "2da53b6a8d7e343023030ccbf6249e682b5cb432"));
    set_progress(0.177213);
    assert(apply_patch_check("/system/app/HtcClockWidget.odex", "4c680a0cfe533593058d3caf020ed2825014c99a", "f22184ba467269bc82646d236007533a400ca2c3"));
    set_progress(0.178950);
    assert(apply_patch_check("/system/app/HtcContacts.apk", "3abd5ca6d18a7f887df03971bcf7b9bcd98e4ddc", "98a6b6ac68f385f6a38cc72a759e007c278a9354"));
    set_progress(0.190660);
    assert(apply_patch_check("/system/app/HtcContacts.odex", "419aaf96a810df61cb77ef64bcebdb90551adc09", "3d60e9f0d92eaf1e67ce970bc64ecd28264da312"));
    set_progress(0.201816);
    assert(apply_patch_check("/system/app/HtcCopyright.odex", "e440c515470908e67dc2f99470e88d1914dba5f6", "df9a5733a64319d881ffb361bfd5ebe69e9ef37f"));
    set_progress(0.201833);
    assert(apply_patch_check("/system/app/HtcDialer.apk", "487d5423f7b1b0a96337b27cd7b4284a546d3ea3", "8241068681b9aaecd938f17170dbeb916ec9c942"));
    set_progress(0.210437);
    assert(apply_patch_check("/system/app/HtcDialer.odex", "b80706090575c945e1b75efba319809b06a3a47d", "2f310755f731914aa67f65c04f758ce58c40789a"));
    set_progress(0.214005);
    assert(apply_patch_check("/system/app/HtcFMRadio.apk", "2859332b580d62edfea5e4da56d7574ef949e637", "0925141e2179ce562d5a67190e1dbc7ff0333a7f"));
    set_progress(0.220771);
    assert(apply_patch_check("/system/app/HtcFMRadio.odex", "6311716080b6474b4ec33d8e2ef5e4b7993ff75b", "d76da0fa6d798c38f1e24bad867e54b75fa303d4"));
    set_progress(0.222980);
    assert(apply_patch_check("/system/app/HtcFacebook.apk", "95b83dcdaf8d4abae0622ed35567c338e010f652", "ed5e2df0023a16c652a5f5a5cd6f77c61514083a"));
    set_progress(0.224482);
    assert(apply_patch_check("/system/app/HtcFacebook.odex", "4d5f3aa49a67d80b7adb2bb9f680e1e258c5d609", "8d20c3411ef59ab8d1d63be7ede17ea8db80d7c7"));
    set_progress(0.226202);
    assert(apply_patch_check("/system/app/HtcFootprints.apk", "4da8614020791a94c1c70a9f3472dd00f51927d9", "a41b4f0f381eef95b95b35488c2a1c48ea02c1fc"));
    set_progress(0.232317);
    assert(apply_patch_check("/system/app/HtcFootprints.odex", "b1d2d625ac0d53b86779b4949d502154da5b355a", "17722c27ae608e21d75d646608ead42a628ee1a5"));
    set_progress(0.235897);
    assert(apply_patch_check("/system/app/HtcFootprintsWidget.odex", "5d41ffb41ead78169ee92388877706501ca4c84b", "df5b4a313ea209df1d6af11a4ebab528be230b63"));
    set_progress(0.237367);
    assert(apply_patch_check("/system/app/HtcLocationPicker.odex", "49c466646ef36d4c00a077a4be0d714e426216fd", "e3c68f8a8575485e98fd6f89d7251cbcca5e3af0"));
    set_progress(0.237880);
    assert(apply_patch_check("/system/app/HtcLocationService.odex", "cedd8b2d11abaf1f56581c181f4ed9cdc0fe56d8", "6c1f5cc70fdc6aff0d006955efd9255142b022b2"));
    set_progress(0.238637);
    assert(apply_patch_check("/system/app/HtcLockScreen.apk", "0d39274108d11f2ed5a61746ebcde111768ac0a8", "b456ced1b1ee58edff5c9a07849fb7cd63c6a9e0"));
    set_progress(0.243620);
    assert(apply_patch_check("/system/app/HtcLockScreen.odex", "940cec5fba422ecbcd7eaf69593297b81a703ce3", "fd8573c01a0fcc5f8b7f1f1e7dfef1fcb4656833"));
    set_progress(0.244386);
    assert(apply_patch_check("/system/app/HtcMessageUploader.odex", "abc2de5d361c58ebf526aad1b674368b129fc039", "46768e2cf1d6f0a25bdf3412de3fca609f90a693"));
    set_progress(0.244546);
    assert(apply_patch_check("/system/app/HtcMusic.apk", "1c6763f8042025e479ca4be8e418f7936b7d65f4", "41485d0d6909eecc7cd370d70e133556239da958"));
    set_progress(0.249901);
    assert(apply_patch_check("/system/app/HtcMusic.odex", "18d0c7de52d822d0839587eeb45f5307811b7bb1", "cca528919efe3b1c6aa896e954bc22737b05915d"));
    set_progress(0.254622);
    assert(apply_patch_check("/system/app/HtcPhotoWidget.apk", "618fedb9863d53af3777c8f574bd5986329a9eea", "3c9cfd859c82da31383c26db268ade297b33488f"));
    set_progress(0.261121);
    assert(apply_patch_check("/system/app/HtcPhotoWidget.odex", "e4c890c6118f9feada1b67e91e9e60d0bccfc8e6", "adc1a5531812299805579cac87a9f00ec1781465"));
    set_progress(0.261784);
    assert(apply_patch_check("/system/app/HtcProfilesWidget.odex", "a077c6e749f95d9e718dcddc90c302269c4cccb2", "6f6b49e4dd27dccf1470abc5d34c970451a2eb9e"));
    set_progress(0.261893);
    assert(apply_patch_check("/system/app/HtcRingtoneTrimmer.apk", "e17a495445a7164fe12646dfd1f53b58b6185780", "438a3a4640dcc3b4c05e3b3cbb96aca2b715bfcc"));
    set_progress(0.263330);
    assert(apply_patch_check("/system/app/HtcRingtoneTrimmer.odex", "090bb6bb5b9a68ea31deb61d2c3e3587e0734e7a", "9bd39059d7a51f3e7145c69eb0446258364d2890"));
    set_progress(0.263955);
    assert(apply_patch_check("/system/app/HtcRingtoneWidget.odex", "ae34355b04a8a439e254f1425556fbdb323b0ed6", "be7b1f16e3e33ecd49db7a596e8478cc9bc16d72"));
    set_progress(0.264032);
    assert(apply_patch_check("/system/app/HtcSettingsProvider.odex", "73b8dde98c04cddee05582434f41c100bcf4393c", "11374e987dafb834c5c379b2bde2fbb23506ddba"));
    set_progress(0.264123);
    assert(apply_patch_check("/system/app/HtcSoundRecorder.apk", "a0158471c1df4ebf0dbc4d13075f6b36f26f4ed4", "e0279d51308ee50cf980ba139dd3ddbcad9f7c87"));
    set_progress(0.267268);
    assert(apply_patch_check("/system/app/HtcSoundRecorder.odex", "200018e80416b953d68f91d45c2ba5657d16de26", "a6e7f6eaa150760403aee0d72377da7707822755"));
    set_progress(0.269083);
    assert(apply_patch_check("/system/app/HtcStreamPlayer.odex", "589bf6fa9f37b4168b09a95d24e93c4dcb579359", "125a8d37dca69a1cba3d57695708737feeec00c8"));
    set_progress(0.269980);
    assert(apply_patch_check("/system/app/HtcSyncwidget.odex", "551b27f17c91bf562dd10aca3d9888d36033bc27", "11b9a07b5a5b8cbdceb054f7e954d9b5861b8f13"));
    set_progress(0.270079);
    assert(apply_patch_check("/system/app/HtcTwitter.apk", "fbfefd02b7f9cab41a4a2630acb555ae4e69f181", "a146aa36893f93c15f9c183a5ca4f3ab6a5ab366"));
    set_progress(0.273206);
    assert(apply_patch_check("/system/app/HtcTwitter.odex", "91a4a6c9105554bfe828abf54291cb64b13db641", "64ae8d94afd694b8730c2b27b4508b3b5d29a5b1"));
    set_progress(0.276311);
    assert(apply_patch_check("/system/app/HtcWeatherWallpaper.odex", "557ddea9dbe50e0f9472da34a127c5f558723f1d", "5754bcfe669b6db92f8bd9e67e44a85f43e96692"));
    set_progress(0.277237);
    assert(apply_patch_check("/system/app/LiveWallpapers.odex", "2912e4dd9da2d72a7a16bd985e48fdd9f4dee012", "dc7f9193272460f58db6795a517adddf3b08657e"));
    set_progress(0.277678);
    assert(apply_patch_check("/system/app/LiveWallpapersPicker.odex", "6c06fd4d705dc90b502acad2a15ee30f140dcb8a", "7fb165b5fc836b2875c9e0ce7950e93c901ee90f"));
    set_progress(0.277807);
    assert(apply_patch_check("/system/app/MagicSmokeWallpapers.odex", "56f2ee3d992cbe17392df3d4a46ce1f97ba3cbd0", "426a1bcccd598195e4e3604b6f3651c12f83b06b"));
    set_progress(0.277961);
    assert(apply_patch_check("/system/app/Mail.apk", "e023e696fd4c11b072c7193d937ab612b598bd97", "258219b37bc3ca5d73373663e4f99af68f7e49e2"));
    set_progress(0.288876);
    assert(apply_patch_check("/system/app/Mail.odex", "89bd7924816561cbf805dc7afb77903003ea842b", "cd44316fe0590aa4723d2a8599b16cbe963aed41"));
    set_progress(0.306487);
    assert(apply_patch_check("/system/app/MarketUpdater.odex", "dc4ea2678084ba4b1bcd1570ae425a445e44a2c1", "8308f75ee3e765db78f45f7e160b2f09dea4a96e"));
    set_progress(0.306507);
    assert(apply_patch_check("/system/app/MediaProvider.odex", "27f4699cee64ddb5692220bb865e70547916b444", "f69c9029031627196f0b3e689d226cf3bbebfc79"));
    set_progress(0.307186);
    assert(apply_patch_check("/system/app/MediaUploader.odex", "ab517e892845410c3eee15c0702d411619b8e9ea", "42f05d6b8fae575337f94fd12b085d55d3e2c4eb"));
    set_progress(0.308492);
    assert(apply_patch_check("/system/app/Mms.apk", "974551f5e387028b0b303c30056267bc93b5e2f5", "d7e3590aaa9a93f1d171182fe67ef3211f6f320d"));
    set_progress(0.320018);
    assert(apply_patch_check("/system/app/Mms.odex", "fb6a290e365cb6e610d9f3327aa145e3599af810", "56fce182a10f29ae2cc091cf8acb1da2d550b23b"));
    set_progress(0.330804);
    assert(apply_patch_check("/system/app/Mode10Wallpapers.apk", "ad1b6b0415e8089fbb9b901193a3d67a3e4cb9a6", "3a5889465c3d85b617fb3adec076d99c45ddb15a"));
    set_progress(0.335248);
    assert(apply_patch_check("/system/app/Mode10Wallpapers.odex", "515c8daf16436249d260d7b9b74b7ece32f666df", "805bd085c0f26b88064977b4499b6978a678a06a"));
    set_progress(0.335411);
    assert(apply_patch_check("/system/app/NetworkLocation.odex", "26dd47fe76722d2cb1b23f6b14dfd1383992354c", "db5d57da7f9a3d139a3f9295d536899c78e1f06c"));
    set_progress(0.336766);
    assert(apply_patch_check("/system/app/NewsReader.apk", "90650e5714c9940a9577f50ec6a35f62a3bc1b3e", "f6fcb6cac1d9198b651f9eb0053b222ce5767298"));
    set_progress(0.339623);
    assert(apply_patch_check("/system/app/NewsReader.odex", "a5d412a9ad753484da256df691ecac97d7025d6b", "edf23e57d23914991f008dcc2be8e412d33a59ef"));
    set_progress(0.342090);
    assert(apply_patch_check("/system/app/PCSCII.apk", "a6625fbd270603cea5f67634d375acf9be492c24", "8f24abcacf224439330d2571b559f6746d2ca894"));
    set_progress(0.343107);
    assert(apply_patch_check("/system/app/PCSCII.odex", "1031cd1fe7684b972228dd53a13bd9dd8ddfb39a", "97fad90241579961504f4f9ea3cf5b7182eec06e"));
    set_progress(0.345780);
    assert(apply_patch_check("/system/app/PDFViewer.apk", "52460c997d88d540b7c97fccadab0d63954758fa", "f8f2efb02380900c97e6f7ccf135d4767cd7fb5b"));
    set_progress(0.346758);
    assert(apply_patch_check("/system/app/PDFViewer.odex", "b518bf107721fa06d505a1321b372b5eda294a25", "5f58ebde1faf73b74a52569d1d2e767231d5ef14"));
    set_progress(0.348101);
    assert(apply_patch_check("/system/app/PackageInstaller.odex", "16fb042f59eb93573db8797cddd82b2945bd987b", "4977f8622f824550acd7b7ac1c0dd900155757eb"));
    set_progress(0.348286);
    assert(apply_patch_check("/system/app/Phone.apk", "6229eaf0a8fd31bc8f4a004c333fe3feb82c3ee4", "5b59941671f1bdef725c70269886e9440a7bb2ed"));
    set_progress(0.359549);
    assert(apply_patch_check("/system/app/Phone.odex", "cd3af21e3d45a39d5792671e9ab80ffb96e8b306", "84361c13a4f6e58eab8aae5117af78b2216ed0b2"));
    set_progress(0.365699);
    assert(apply_patch_check("/system/app/PicoTts.odex", "35aada9cecee84b4c22e658fcdbacc1675ecb7f4", "453ba8825fc9be0f791f38e226fa94a994926766"));
    set_progress(0.365786);
    assert(apply_patch_check("/system/app/PluginManager.odex", "bbfd4cb01a55c378bacbb41145effc55966dc2ad", "f54a6c1729180f804b000f6abd3cbae8fb40ab38"));
    set_progress(0.365945);
    assert(apply_patch_check("/system/app/QuickLookup.apk", "5a24f5607d721c93bf758f95ef8a94a0b5c61248", "02d7942fd7d8e6124b2145de2903e925ccce75b7"));
    set_progress(0.366259);
    assert(apply_patch_check("/system/app/QuickLookup.odex", "f308bb905475d914707e6b12bc23fd6a1266ec86", "3f23e68d99be8b32a2b1535d8ef88328ed6d1f8d"));
    set_progress(0.366617);
    assert(apply_patch_check("/system/app/Quickoffice.apk", "1ff72cd4b1920d8855c750f047b08d279129b7d9", "cd8e3a9f2bdeb6bfb593c2e76add5a4842103c98"));
    set_progress(0.372976);
    assert(apply_patch_check("/system/app/Quickoffice.odex", "2bfc58fa2f4decfa73a04c7f74da83eec7b97b60", "3b165396138d06a9800e8081bc1c33b28ded86a5"));
    set_progress(0.405148);
    assert(apply_patch_check("/system/app/QxdmLog.odex", "acc06f0352537bc4882e97e15fbf1ba2c773dae2", "7300f302ee0d70edadf9f3f2219d7c58e470bb9a"));
    set_progress(0.405206);
    assert(apply_patch_check("/system/app/RSS.odex", "a2af8aa86988a7e142febc6fc2d9adf7c072882e", "3859ec039000ce5aef8a3032b804beec0e81f19b"));
    set_progress(0.408464);
    assert(apply_patch_check("/system/app/Rosie.apk", "f1cbf44f955ac4ed691dbd5ef9244ef9a20bff85", "f2ee03a9a13ade3aac56fd9edc4ef3d4ec9068d9"));
    set_progress(0.414011);
    assert(apply_patch_check("/system/app/Rosie.odex", "5850bb3f4b9356396afad1b35d99828f4efcd732", "c157bf7552446df2c35139482ed4f0072c155386"));
    set_progress(0.418188);
    assert(apply_patch_check("/system/app/Settings.apk", "2d770810d501d373a3f7f9e9937fefdc829fc44d", "da1465513b14d365ac12a382f39dd2a948fb471a"));
    set_progress(0.446857);
    assert(apply_patch_check("/system/app/Settings.odex", "f2eaf09cee952975d206a4b090341ce67bac7a87", "4ee78c39b19d6a706a82543fdc1848b4e3ceda72"));
    set_progress(0.454454);
    assert(apply_patch_check("/system/app/SettingsProvider.apk", "383feb2bcc81dd548b0d041481a9c42cfb188223", "7497deaf55d77105220b0cf580f378b816f283c3"));
    set_progress(0.454569);
    assert(apply_patch_check("/system/app/SettingsProvider.odex", "5ea3d43aef25b1cf40543011b18e110ca4eac403", "0db39b6aa50fd868f9b16109e6829221c00f76b1"));
    set_progress(0.455008);
    assert(apply_patch_check("/system/app/SetupWizard.odex", "61b2d95ed3cc56d3cb758dddaed99a7aa44db711", "ceaa1b882ce88491ab09f68141e7689e6f1df477"));
    set_progress(0.455557);
    assert(apply_patch_check("/system/app/SocialNetworkProvider.odex", "8002127868aa998ad7513d9521636cdbb3e19077", "73b240e6acde8215eae5d235c4d02d8712e20855"));
    set_progress(0.456307);
    assert(apply_patch_check("/system/app/Stk.apk", "c614cbbaf2df707e8792e207d36e0125c2de2521", "2035850d260fa916684ceff53c8f6fa2123f060b"));
    set_progress(0.456573);
    assert(apply_patch_check("/system/app/Stk.odex", "eb34f1437c0d312774f6b9b117e1bdeb3c691261", "f6323573b6aa28549ef86ee6c6ff8e2c89e1bcf9"));
    set_progress(0.456893);
    assert(apply_patch_check("/system/app/Stock.apk", "5a3f7d7199cca3ba9e43ed0357f3a0d78f9d2363", "ec4684295dcef43010d1c91e38c8d211a7c7ada8"));
    set_progress(0.459660);
    assert(apply_patch_check("/system/app/Stock.odex", "36e6c55722c5351766d6455222ec5c2e0e70903a", "cf63ff8d8b4b0a44d7efc18a2a024886b54e1f89"));
    set_progress(0.460864);
    assert(apply_patch_check("/system/app/Street.odex", "f06ce7d5b14e1df329a1c65f73a4e3a86cd6c64a", "1fd3b69dbf5e96ad56c1e7d2fd782a9fec2a0497"));
    set_progress(0.462615);
    assert(apply_patch_check("/system/app/Talk.odex", "5e0d4d0b54912384ade197f9f3833aaeb8a2cd88", "4e77f8be1c724b57fd039b6b4e2fb91cc3c5cc0a"));
    set_progress(0.465677);
    assert(apply_patch_check("/system/app/TelephonyProvider.apk", "64f11302a21646bf74ca0a07746197d59b39ccdb", "36c8942463dc949282dfe9ff072002d964e64322"));
    set_progress(0.465838);
    assert(apply_patch_check("/system/app/TelephonyProvider.odex", "b7f05a170c6f8560cfb3a75ee7ef9e35a2fb1951", "3a80c3abf1615ad6d599cada5f5eb986eeae04a8"));
    set_progress(0.467862);
    assert(apply_patch_check("/system/app/TtsService.odex", "d38fb4ec654080662b9b1611b3b7ca299de01202", "2032779b4fa83b91497f49c2c9c5b5e25ba9d8b2"));
    set_progress(0.468092);
    assert(apply_patch_check("/system/app/Updater.apk", "999d06fd3cfc7cb1f2e0ba3fd833064b59934de3", "d4c1efcb1d618210864f392d2e5f6ea862469060"));
    set_progress(0.469850);
    assert(apply_patch_check("/system/app/Updater.odex", "fa536bd55c395c7ae16ed494e01d969662076501", "451595f5abedf0bbb0b9222fb7dafd183063c2df"));
    set_progress(0.470624);
    assert(apply_patch_check("/system/app/UpgradeSetup.odex", "6c2c5bd08626c90f220b78661315241df240610b", "20aa5a9c7975dddcf0b1c7671ad5f3d5c0f6ef17"));
    set_progress(0.470700);
    assert(apply_patch_check("/system/app/UploadProvider.apk", "bfa34165e604970ea1963498b87c926151b44fad", "79a61597322ac418050ff155efac16cdda387927"));
    set_progress(0.471531);
    assert(apply_patch_check("/system/app/UploadProvider.odex", "28d5aabf4954822ba1c2a8afc51f9f06d4215fdd", "ac75d4ad815dd8f849536b32351ac1ea25fe2791"));
    set_progress(0.472467);
    assert(apply_patch_check("/system/app/UserDictionaryProvider.odex", "e78ea01600e8c2fe4839807cc21662db4f60dc8a", "d070137cd40650941b726efdcc6be44f2bc3fe05"));
    set_progress(0.472562);
    assert(apply_patch_check("/system/app/Vending.odex", "1a5743eab120c1f6a75f4fdb8d8bc25f85cb8dcd", "0ad81435af052774848bc83e57650c2ba33ed6f0"));
    set_progress(0.477923);
    assert(apply_patch_check("/system/app/VisualizationWallpapers.odex", "29915043c17749c1ceed260412af89685d17f7e4", "895d7a066a2f93626bae4c99e0905691d41eff7c"));
    set_progress(0.478121);
    assert(apply_patch_check("/system/app/VoiceSearch.odex", "8daabbdf36d505e4bd8cf83a00eb8d43a4c00ec0", "2720d324b583e58b8fd500b15094ad3b93b1a517"));
    set_progress(0.480841);
    assert(apply_patch_check("/system/app/VpnServices.odex", "e6ab09395e9f97c75bd9cc5fd2806169d64cc8c3", "49a6b902bdfbf3de9f6815c585a51f7b85b0ef4a"));
    set_progress(0.481045);
    assert(apply_patch_check("/system/app/Weather.apk", "d0cc6d59ea985a0d0dcb2dc7519fe87e77e90071", "f0605cb40efa749406fba64727c698b523605f06"));
    set_progress(0.483228);
    assert(apply_patch_check("/system/app/Weather.odex", "8b4efe95e293fd700e8ade714ea6d7c3a536cbe3", "6e1291ca60e92dd7b6eea2a30d6bdbdef42c7c95"));
    set_progress(0.484394);
    assert(apply_patch_check("/system/app/WeatherAgentService.odex", "087111e3a9a464a210f91239ee6af00359e185e0", "440c7d0955cd1f3ce56f26bd272b3f8155581e9b"));
    set_progress(0.484540);
    assert(apply_patch_check("/system/app/WeatherProvider.odex", "f6ce1e738fe5ac10412f7b7a56183a9d76f0f581", "2cbc19774be4509b2c4e0c68fc7083c10770e890"));
    set_progress(0.484718);
    assert(apply_patch_check("/system/app/WeatherSyncProvider.odex", "773ad708ffe4145891d624da77c3588e4bbb34ff", "414412b8ac0343d0b66657d7e755db98961ef9b3"));
    set_progress(0.484989);
    assert(apply_patch_check("/system/app/WidgetDownloadManager.odex", "500187dda9de3ab934512e0331005c9a005e5334", "85e8a2aec10ce1a6b8cc50ed0b1f713a5f5ebfa2"));
    set_progress(0.485710);
    assert(apply_patch_check("/system/app/WifiRouter.apk", "42b735368dddf32b6a2c65bee18e32901d70bfbc", "262590f87e94c54675f652fac79df34b69e2037c"));
    set_progress(0.487618);
    assert(apply_patch_check("/system/app/WifiRouter.odex", "65f84e29c82ee429d66a049e7d1b4c7a2313dda0", "eaf72bc03658ff0f95c1b9e72316c38e030771df"));
    set_progress(0.488122);
    assert(apply_patch_check("/system/app/WorldClock.apk", "bd952d02c0d45eefc6276863a5b6f4c76e25364b", "522690dbd46505d85279839646c786330141a11a"));
    set_progress(0.492069);
    assert(apply_patch_check("/system/app/WorldClock.odex", "c3ce3e20eff8a7fce155228e60a790dce38192f3", "a21eba2892aca4a71d4da56e66de450e24a747d0"));
    set_progress(0.494432);
    assert(apply_patch_check("/system/app/YouTube.odex", "14901bde8fc5292763ba4e423e38c54a880f173a", "c5a32cfebfc05379a3162c9368a25f90f62c9278"));
    set_progress(0.496743);
    assert(apply_patch_check("/system/app/com.htc.FMRadioWidget.apk", "22e42d5fc55e1254ae7d712b4197c2c377d3b09f", "c080762554b4ac45d18c8737a6469daa3be4c024"));
    set_progress(0.503089);
    assert(apply_patch_check("/system/app/com.htc.FMRadioWidget.odex", "9d7914bb19f7ec2148cd1220bfa0527ed98f1396", "95e43d499b1aefa6056063b0f356aaa675e37eba"));
    set_progress(0.503872);
    assert(apply_patch_check("/system/app/com.htc.FriendStreamWidget.apk", "16fe640f8d3ca329357ca9d43402ef0b5ad3b62a", "79590668e290a34caa2e9a67478470719f67faaf"));
    set_progress(0.505284);
    assert(apply_patch_check("/system/app/com.htc.FriendStreamWidget.odex", "ca01beedd5b3c7d42718372f3e4732a77ce1d497", "1c90b5d374e5d4d466f54b152033a5cc5251f150"));
    set_progress(0.505783);
    assert(apply_patch_check("/system/app/com.htc.MusicWidget.apk", "8a330005c1dbc82056faf5c8d386a87ab51ab14f", "bf3cc49ef86c2be2f7e2bfd97bfaa9a3a103a982"));
    set_progress(0.508506);
    assert(apply_patch_check("/system/app/com.htc.MusicWidget.odex", "d1f21d2a2f05271659dcdd64f23f7ffa62e22dd4", "19ed18c954cd489fc3324f85abd03819de43e3f5"));
    set_progress(0.509017);
    assert(apply_patch_check("/system/app/com.htc.NewsReaderWidget.apk", "1759529529c920219dc93a928ab3bfb32f06a01b", "f7b3b6c329732cf03d84744327a85cf6d5836f17"));
    set_progress(0.510629);
    assert(apply_patch_check("/system/app/com.htc.NewsReaderWidget.odex", "d73ef8efd3424040cedfb7871febadae7559fade", "86c7945497dc5c12c83c72bd198675667b0d8e04"));
    set_progress(0.511573);
    assert(apply_patch_check("/system/app/com.htc.StockWidget.odex", "8c26893e37292639d8abd92587ef6ddf8db49165", "df177719c98b1853469d63ed679372a62a3f0ee7"));
    set_progress(0.512495);
    assert(apply_patch_check("/system/app/com.htc.TwitterWidget.odex", "6e556cc6ffbeadeeec5b4731b154f552959605ce", "1be3651045f10aa22d008d846a396d13529c19e2"));
    set_progress(0.512958);
    assert(apply_patch_check("/system/app/com.htc.WeatherWidget.apk", "9d1f5c93ad5b602e1ff5e49797e2a619ff2ab8b7", "3f6f6f8f3fec79f01e789606834ac302e3081c2d"));
    set_progress(0.515313);
    assert(apply_patch_check("/system/app/com.htc.WeatherWidget.odex", "5cc190253f96d3fa41634ec20e096b6a90e6b76b", "98c73e8f676c4c4c75bf3e9de326373351056e6d"));
    set_progress(0.516217);
    assert(apply_patch_check("/system/app/htcbookmarkwidget.odex", "1a02780742c6b998d29afaa50db904839907d4d0", "5e4995277bb6ad20dfd1c2cd74e1ea8a3c812b6b"));
    set_progress(0.516829);
    assert(apply_patch_check("/system/app/htccalendarwidgets.apk", "5c90ece2d923a15bf07c3dbc1caf4d8202652e24", "f598a768c1aab41ce1e1c5afbb221e4e34f22325"));
    set_progress(0.518214);
    assert(apply_patch_check("/system/app/htccalendarwidgets.odex", "d415394b6e9f1bb6dd761b5c18ccf961e8703daa", "7f20b5c44879a8c5209aa9ddd4187aae9cc5d3ec"));
    set_progress(0.519044);
    assert(apply_patch_check("/system/app/htccontactwidgets.apk", "ea69340dea7e9ea1f9cee02a955623b1a707a0e4", "8c6520419aab51d1a35b66e3ce4a15aada0489f2"));
    set_progress(0.522161);
    assert(apply_patch_check("/system/app/htccontactwidgets.odex", "ec2717a4e90aab9cdf3da0bc8b9eae26a4fdc233", "08f3365b5e2d57175f167ac230797eecd37df004"));
    set_progress(0.523540);
    assert(apply_patch_check("/system/app/htcmailwidgets.apk", "4ca8a7f08b9d0085e5ceab1e9e7b8e463726130c", "0378802fb4e2d7245da5b27f932f556e996e3033"));
    set_progress(0.527683);
    assert(apply_patch_check("/system/app/htcmailwidgets.odex", "d945a0d7089c3d32b5c715e1ee2b6fa02c4b9140", "21e9c261354b86fba9f46fc2f17adf2020e3977b"));
    set_progress(0.529179);
    assert(apply_patch_check("/system/app/htcmsgwidgets.apk", "6a773afd16caee1bb3fb2620150233c2914af706", "5450eb821fda0a7281781d89ae4fdab531cb47ce"));
    set_progress(0.531125);
    assert(apply_patch_check("/system/app/htcmsgwidgets.odex", "37846c88e2dd9a75cd3b3e3210cbcf82ba9cf7f1", "6fcd350859d6a39fc553544d3c5ab163f4a344e0"));
    set_progress(0.531876);
    assert(apply_patch_check("/system/app/htcsettingwidgets.apk", "3e27ee266a9487183a8563208f6106a1637fb600", "7861ce346c407fecc08d44d62df1994a543e80a4"));
    set_progress(0.533088);
    assert(apply_patch_check("/system/app/htcsettingwidgets.odex", "31f3a1d611804e3d80625cb671215ae2dcaef9da", "6ba5f1ee5cc904450219becbcc6744a7dd6e9aae"));
    set_progress(0.533606);
    assert(apply_patch_check("/system/app/install_flash_player.apk", "b2279fb1313b7ad165e4058392c42fcb3d0c723c", "af546ae29917071e5a38e4392636b9aca2cfdaf5"));
    set_progress(0.557474);
    assert(apply_patch_check("/system/app/install_flash_player.odex", "47a4d1d2eeb597d28ebf65e5825c76e57452859b", "c530317c7743118bfa07bd8e3282fe9c90006110"));
    set_progress(0.557808);
    assert(apply_patch_check("/system/app/restartapp.odex", "4cad3f7c71cd21415caab6a9a347026b8814056e", "638185b543d7b3861d3cda2c5a4edf16c65586ba"));
    set_progress(0.557863);
    assert(apply_patch_check("/system/app/teeter.odex", "7e92a08131b5c94dbabe5f0aeb79e85762fc8dbc", "86688d00784d5e7cdd73fcda2f30ae25a67dcc98"));
    set_progress(0.558443);
    assert(apply_patch_check("/system/bin/btld", "f1af8711b015f979977de89572b0169821f3aaa8", "2ae86a34516fa7822d17d6f37a2f78c83cc0de49"));
    set_progress(0.570495);
    assert(apply_patch_check("/system/bin/debuggerd", "bb89e814a367f2e2ac747ffa17050a8185f364b9", "8bb2be67b1b65e7b98aaeb4ff638e2b0b94c6ed2"));
    set_progress(0.570630);
    assert(apply_patch_check("/system/bin/iptables", "709a8a388b7748ab0a827c8859cc4c9516805c44", "3201724da41c8a336ae98e9773ec1b8bf0ea5412"));
    set_progress(0.571272);
    assert(apply_patch_check("/system/bin/netd", "245c11be4e81c0713c8b7cfbd7afc6501e47130f", "4c824c2ae7d04fce8c425c58e82851d605a47bae"));
    set_progress(0.571537);
    assert(apply_patch_check("/system/build.prop", "8050cbd1fc8cd5fa9c10bc1c648b849656018896", "3ddb3d47afc370231c24adc91a44757a19af48eb"));
    set_progress(0.571576);
    assert(apply_patch_check("/system/customize/MNS/20201.xml", "73c7a2388811e77bdb8640ef3d01e7193ec7047d", "6699d2c162acefbf08b33e5d52a904d91ada7b68"));
    set_progress(0.572105);
    assert(apply_patch_check("/system/customize/MNS/20205.xml", "73c7a2388811e77bdb8640ef3d01e7193ec7047d", "6699d2c162acefbf08b33e5d52a904d91ada7b68"));
    set_progress(0.572634);
    assert(apply_patch_check("/system/customize/MNS/20210.xml", "73c7a2388811e77bdb8640ef3d01e7193ec7047d", "6699d2c162acefbf08b33e5d52a904d91ada7b68"));
    set_progress(0.573163);
    assert(apply_patch_check("/system/customize/MNS/20404.xml", "872d0a6d864f0b8b6f7f2aad5830d9ab93c502e7", "26c54fd17e6f68097fbcfcd8222605e282f3294f"));
    set_progress(0.573683);
    assert(apply_patch_check("/system/customize/MNS/20601.xml", "4b71939723acd8dc649786ee84eb8313bfe0d3dd", "f0db7e07b8c80e105c8b12229c9404bcdcce372c"));
    set_progress(0.574202);
    assert(apply_patch_check("/system/customize/MNS/20810.xml", "3e5147a66e927a1c3ef0bb8a7eda7ff0ff3a38ee", "8f8689c968faf935ce4402d209d3c1fa5552c50a"));
    set_progress(0.574729);
    assert(apply_patch_check("/system/customize/MNS/21401.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
    set_progress(0.575256);
    assert(apply_patch_check("/system/customize/MNS/21403.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
    set_progress(0.575783);
    assert(apply_patch_check("/system/customize/MNS/21404.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
    set_progress(0.576311);
    assert(apply_patch_check("/system/customize/MNS/21406.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
    set_progress(0.576838);
    assert(apply_patch_check("/system/customize/MNS/21407.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
    set_progress(0.577365);
    assert(apply_patch_check("/system/customize/MNS/21416.xml", "e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f", "f00c7fdfd601097a1db5e44b7070748ca7ee12d2"));
    set_progress(0.577892);
    assert(apply_patch_check("/system/customize/MNS/22201.xml", "48b56b6447ef0d0bd5d3feb8f33ffc9a8064dacc", "29a5ab502a5f554d9bc41f293c7956b9324145c1"));
    set_progress(0.578416);
    assert(apply_patch_check("/system/customize/MNS/23210.xml", "dae0bd8ccc75b38e6bff635c971304cf98e07f92", "374634a8c3f22ff1b6384af918a14b2668cb7fc3"));
    set_progress(0.578948);
    assert(apply_patch_check("/system/customize/MNS/234.xml", "4b9548a6f1ee6930141dcda127c76226550619ac", "88ab55184efe3516d2cc756b135ac2e1f5ebe232"));
    set_progress(0.579469);
    assert(apply_patch_check("/system/customize/MNS/23802.xml", "ad54d14dc7d046ab4d42ff55e23b5e770b56acaa", "635ee23fcd0c6434090fc820c29851e16055db96"));
    set_progress(0.579995);
    assert(apply_patch_check("/system/customize/MNS/23806.xml", "407d609b75ee38e2489956d318500b8fe05ae40b", "7e96d8d6137093fbbe8a88b3409486f661b17100"));
    set_progress(0.580516);
    assert(apply_patch_check("/system/customize/MNS/24001.xml", "5b13ed55aacc73282ae051b0ef907d38d5768706", "cb0c23154cb37ee14a4e072e8fff7bf64a98e326"));
    set_progress(0.581044);
    assert(apply_patch_check("/system/customize/MNS/24002.xml", "e987892a5fa4b87644d375b42325f553feace4d5", "7b33ff79e4915fdda3187381224af576a8a31667"));
    set_progress(0.581565);
    assert(apply_patch_check("/system/customize/MNS/24008.xml", "dddbdbd1d6072ed9fc3884928fe262f29e5c6c3d", "74db81b2b9bd7c7de03b5d0c54bf0e47028f7aa5"));
    set_progress(0.582088);
    assert(apply_patch_check("/system/customize/MNS/24201.xml", "0a21ec75f11dcd4528e2bb10bddbf56fe328cc2b", "41084ac6b90672e8e582b07797d457756057091c"));
    set_progress(0.582618);
    assert(apply_patch_check("/system/customize/MNS/24801.xml", "688a7c668c53d6a935de5dcf2da3e1a3965b43c1", "981890ddf50c4b61bcef1626178a25322bd97d73"));
    set_progress(0.583150);
    assert(apply_patch_check("/system/customize/MNS/250.xml", "2f79e202a609c800d4a7caf9f6339dd3ba024880", "4f4e30fff13e21c1352cb615627742fa14b7f2e6"));
    set_progress(0.583691);
    assert(apply_patch_check("/system/customize/MNS/255.xml", "8481d3541a1c85e3e50fa224857c48467ae464d2", "ef0f71de63c4a842e89de2f82667fc28ff089e69"));
    set_progress(0.584077);
    assert(apply_patch_check("/system/customize/MNS/262.xml", "073d7731051f3515e52e6009811adf8bb333f513", "b3386dbc6b96eb2d2c8220319423d0ac1c6a68df"));
    set_progress(0.584598);
    assert(apply_patch_check("/system/customize/MNS/26801.xml", "23ae3df03641cf16b498a159de1fdf159fb23b80", "647eb1a79dfb872ff3b58c5fed4b900cd371b36a"));
    set_progress(0.585120);
    assert(apply_patch_check("/system/customize/MNS/26806.xml", "23ae3df03641cf16b498a159de1fdf159fb23b80", "647eb1a79dfb872ff3b58c5fed4b900cd371b36a"));
    set_progress(0.585642);
    assert(apply_patch_check("/system/customize/MNS/425.xml", "d9522c94d04212af16bd7b22c14d0780bf750620", "c59728ff5be3e7bfe7aa9875e5c0bacdeff95e46"));
    set_progress(0.586162);
    assert(apply_patch_check("/system/customize/MNS/65501.xml", "f371398966cd4cd74069ccfc6812172e2c0e6a74", "102472d2d4d3224af35540b560e4d9bfc95afd15"));
    set_progress(0.586738);
    assert(apply_patch_check("/system/customize/MNS/65507.xml", "249b7283093c8ccc7bfe53dea52e91f72560be87", "7e396d9723de3691a8208d2b02aad183b9d3c6e7"));
    set_progress(0.587266);
    assert(apply_patch_check("/system/customize/MNS/65510.xml", "f0fec5ed3cd97da31fd961090156e5eedbb805aa", "8e9d1f6eb2463f346cba04beb75a594631ac277b"));
    set_progress(0.587796);
    assert(apply_patch_check("/system/customize/MNS/default.xml", "342e0053f259e701d3c91af7316ad6c30a01e588", "2b1dbdc132d3004d745ec2e3c5af2212928a49d6"));
    set_progress(0.588319);
    assert(apply_patch_check("/system/customize/resource/CCInfo.txt", "ade19ff8a2fc85552428fc1912b391ea66102ec0", "3e157b224e141c04c53ba2e63bb0e84e88be3e09"));
    set_progress(0.588336);
    assert(apply_patch_check("/system/etc/NOTICE.html.gz", "37f4fa2e947ce0d122ff85faf66fb112710c0a82", "dd7c032924d8a74b8bbf3e40374a1f918e8cbd88"));
    set_progress(0.588759);
    assert(apply_patch_check("/system/etc/firmware/default_nel.acdb", "0dbb9caba244cf7752ceac37e1e52e9130d6aded", "55924df2b28f66ae990f38e180d77317f9ddcc95"));
    set_progress(0.589528);
    assert(apply_patch_check("/system/etc/security/cacerts.bks", "de85a33da3e0f6b4ef74a7bd7c38a9d8dccdb68c", "4a020cdf4c03185b07f973721fa63b672bc5c339"));
    set_progress(0.589909);
    assert(apply_patch_check("/system/etc/security/otacerts.zip", "5a527c8698a9460c52d58da210450285469cef07", "a9d8f05c4eda08c591a3c9c0720c961ec873cab3"));
    set_progress(0.589916);
    assert(apply_patch_check("/system/fonts/ARDJ-KK.ttf", "2f4c25798a447bd9b2c7080c3aa566ffc7b41ec5", "96f883d95fc56ba4d7508573bc4c0e68f0396ce2"));
    set_progress(0.589991);
    assert(apply_patch_check("/system/framework/am.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.589993);
    assert(apply_patch_check("/system/framework/am.odex", "25e9f9895d9e4f95bdf0af508f2aee394c6c0784", "1dabac0e39b5f0f3b89f70153523df0ce8b97ef9"));
    set_progress(0.590114);
    assert(apply_patch_check("/system/framework/android.policy.jar", "a234ba69c72928749ca2939fe03ad03a51010266", "a1a273e2cf425a35cc9310a5c7338df3aab1f0a9"));
    set_progress(0.590116);
    assert(apply_patch_check("/system/framework/android.policy.odex", "10d5097af0f9052f72d12e74cac9fe2076567ed7", "cfba9a07813dcca86f53f83fb98573aaaae3432e"));
    set_progress(0.591579);
    assert(apply_patch_check("/system/framework/android.test.runner.jar", "1348094bc9f4e329018b2477bc95497a3ec727a2", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
    set_progress(0.591581);
    assert(apply_patch_check("/system/framework/android.test.runner.odex", "9fb0000143205b5e39ae880d6a3a449c4c0d4b47", "f4f5fb2915c1dbbd8af66334fcd05b122ab774a6"));
    set_progress(0.592762);
    assert(apply_patch_check("/system/framework/bmgr.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.592764);
    assert(apply_patch_check("/system/framework/bmgr.odex", "dc20083e1b1c4795e3e6ee8eeda5c44afff1ac89", "f4b2f8c6db953c9ff9d2b60476274bf5649636f9"));
    set_progress(0.592851);
    assert(apply_patch_check("/system/framework/com.google.android.maps.odex", "d6222fa4865fdf9f614fa2147c8a85898b4f9053", "f2094239261872286d3346f1792193e7f174cca9"));
    set_progress(0.596972);
    assert(apply_patch_check("/system/framework/com.google.translate.jar", "3844f9894e59ae0f98c794393abda93181f0c105", "1d147f0148be0bfaa6901a8fd080f4fce9019c2e"));
    set_progress(0.596974);
    assert(apply_patch_check("/system/framework/com.google.translate.odex", "eb985b1b6ae85c083f63215cb4e087d8a9ea1db8", "4679a3e886032ef7df16ede3c5447740190597af"));
    set_progress(0.597230);
    assert(apply_patch_check("/system/framework/com.htc.android.easopen.jar", "3844f9894e59ae0f98c794393abda93181f0c105", "1d147f0148be0bfaa6901a8fd080f4fce9019c2e"));
    set_progress(0.597232);
    assert(apply_patch_check("/system/framework/com.htc.android.easopen.odex", "64a02e13e3d506d234268021a7962cbc4e2e2728", "aa9200c23aa8bade5cf2c381a66dfd3921ef935b"));
    set_progress(0.597397);
    assert(apply_patch_check("/system/framework/com.htc.android.pimlib.jar", "1348094bc9f4e329018b2477bc95497a3ec727a2", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
    set_progress(0.597399);
    assert(apply_patch_check("/system/framework/com.htc.android.pimlib.odex", "c2ff1a161f56897f3ffd95a2981f9dbb4674ce34", "69a6807ea0d4419afdf38290bf990663793fff9f"));
    set_progress(0.597949);
    assert(apply_patch_check("/system/framework/com.htc.framework.jar", "fc180adeda42bed9113cc99c4a57238be8c4cf72", "8f5f13f9fa9b97e054bec11b6742d32099d544e8"));
    set_progress(0.597951);
    assert(apply_patch_check("/system/framework/com.htc.framework.odex", "f7087d2354ec132e192211d800d057199f5da165", "f94c58056ba80717ffbcbb6e5cbf2a0523438342"));
    set_progress(0.611559);
    assert(apply_patch_check("/system/framework/com.htc.resources.apk", "1cc2d866e8c79cdb500c538470611fd070a472d7", "28642cea2556313405190437ca598a6fef25f4ca"));
    set_progress(0.721969);
    assert(apply_patch_check("/system/framework/com.htc.rss.jar", "fc180adeda42bed9113cc99c4a57238be8c4cf72", "1d147f0148be0bfaa6901a8fd080f4fce9019c2e"));
    set_progress(0.721971);
    assert(apply_patch_check("/system/framework/com.htc.rss.odex", "e49ea7a3dee363b41a96337a3eb1c264bbc20b47", "83363436303dba8414252216e6556e6bf129e9cd"));
    set_progress(0.728971);
    assert(apply_patch_check("/system/framework/com.scalado.util.ScaladoUtil.jar", "3844f9894e59ae0f98c794393abda93181f0c105", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
    set_progress(0.728973);
    assert(apply_patch_check("/system/framework/com.scalado.util.ScaladoUtil.odex", "ec4a40eab026ed32ed8a1afbc35da6e2304ec426", "d51dc94047ab31e28e256d058c547a111b10135e"));
    set_progress(0.729015);
    assert(apply_patch_check("/system/framework/core.jar", "e3e39b0c825aef80aff3b492e49f4e9e98c07142", "c19791e4dfb9c5341a3b4bfd88286ee18fbadcdb"));
    set_progress(0.729387);
    assert(apply_patch_check("/system/framework/core.odex", "1090f925afe42363fa09ac0884e2c444e5910bf3", "289fd966b31f28c14f6dfd7ba2b3484336ec6518"));
    set_progress(0.763446);
    assert(apply_patch_check("/system/framework/ext.jar", "79f2530caf6b7ff0f3a45fb1e4ce16150747287d", "5a232d75131b3d0d03862247817e4a345ae09d8c"));
    set_progress(0.763449);
    assert(apply_patch_check("/system/framework/ext.odex", "0f15113125d818e5305d4c69aa25e477341f7c1c", "5db6cbf1a3202c6aefce15aa0ad6e78aa2719e98"));
    set_progress(0.767284);
    assert(apply_patch_check("/system/framework/framework-res.apk", "af23bc76e4307148c93f5ce416f847cefebec9a6", "5e3a6dc95d25a6a5e45bbe0f3d598bfad140c22c"));
    set_progress(0.797530);
    assert(apply_patch_check("/system/framework/framework-tests.jar", "8624c27296d5779589f1d39510c49c7befc5e2c1", "8ecff138e68447d747ccd51dbc20efde8d275143"));
    set_progress(0.797532);
    assert(apply_patch_check("/system/framework/framework-tests.odex", "dd41fbf59b6d1207d8730a7737ec4453c85c2dbe", "2bcd4496eefc313b6d5e25b7eab8efc243e4ed8c"));
    set_progress(0.797663);
    assert(apply_patch_check("/system/framework/framework.jar", "ea72f7f0184bd70770752571d7d20ad3ccf85c2f", "c312ad2c687ff51bca7110ee7d138eb84b28a664"));
    set_progress(0.797721);
    assert(apply_patch_check("/system/framework/framework.odex", "a7aba407032523df6af2d181c804b0059244cfc3", "d4f0131d181ef5164d0ec0b7811930cb6d9a5952"));
    set_progress(0.855428);
    assert(apply_patch_check("/system/framework/ime.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.855430);
    assert(apply_patch_check("/system/framework/ime.odex", "d57124329d5d09a76a9df8cd389e35435ef9a0b8", "a7e5d307c50c7d36c3d6eaea9c0fc73c5d4fc0b9"));
    set_progress(0.855471);
    assert(apply_patch_check("/system/framework/input.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.855473);
    assert(apply_patch_check("/system/framework/input.odex", "74d17813c6a64ead1db86e400d3d12ed446404e9", "9fd13251916a8cfc571408d422d17312c270b597"));
    set_progress(0.855501);
    assert(apply_patch_check("/system/framework/javax.obex.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "13992b5e60f88b9722ca018c0969a2346c0463f6"));
    set_progress(0.855503);
    assert(apply_patch_check("/system/framework/javax.obex.odex", "636b2cbd3698f153aee31cddb6317b042b0ab4e4", "aaba78b444eb87ced7888b14d69d77514be06150"));
    set_progress(0.855873);
    assert(apply_patch_check("/system/framework/monkey.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.855876);
    assert(apply_patch_check("/system/framework/monkey.odex", "82238d311f03b772513f372e1c726d532e06a0d2", "0db10ef5a3772b220fac0a882abb313666b69fdd"));
    set_progress(0.856349);
    assert(apply_patch_check("/system/framework/pm.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.856352);
    assert(apply_patch_check("/system/framework/pm.odex", "17be5e7477b5f1d036927c5840f2a5dfbcddf17a", "d9ccfb158a5b70ce26cfedf95fad6efc131e1e6e"));
    set_progress(0.856504);
    assert(apply_patch_check("/system/framework/services.jar", "202cb7a3bdad44d32145375591208808a47562ee", "3d7ab3a9ffbf097f4d0ed1ae63c356e91590ffee"));
    set_progress(0.856506);
    assert(apply_patch_check("/system/framework/services.odex", "d1d1c2411289d0d66c6121b80428b490c28cdcdb", "0c03debcf7460cd37f98316dc6bae6677208d472"));
    set_progress(0.866740);
    assert(apply_patch_check("/system/framework/svc.jar", "7d1c68fb68d25add423e3df7aa1f8ade8e7905f7", "c70833662c7fab8c821836e45ad5dda40cbb1f82"));
    set_progress(0.866743);
    assert(apply_patch_check("/system/framework/svc.odex", "1c6b0c7a8cba52dc0384dd47994d2beaeee07a69", "c35e8ad7317c197e89ee2f8127c6aae114f1fde6"));
    set_progress(0.866805);
    assert(apply_patch_check("/system/lib/bluez-plugin/audio.so", "d1134c53947f13a4198d0c43dd92dc15a8c7176b", "c0efc09675b2aa9ee4f7be88b74d489e175c3f2b"));
    set_progress(0.867506);
    assert(apply_patch_check("/system/lib/egl/libGLES_android.so", "2549a57077dffeaba0f9fced3ecb0a716f40f0ae", "ac4a61eee79806c3514f2bea55241ae3ea29a377"));
    set_progress(0.868178);
    assert(apply_patch_check("/system/lib/libandroid_runtime.so", "6aa9329804c3d519cf4cc6abd6b6b77dfd0cbeb0", "92c719df4caf0db5129f8d37ce2b68eea410e7fc"));
    set_progress(0.872021);
    assert(apply_patch_check("/system/lib/libaudio.so", "d014c26f3b6456594ab261d08e91fd735cd021ee", "d276f25cde5377950c556a093768c0887f434d5b"));
    set_progress(0.872415);
    assert(apply_patch_check("/system/lib/libaudiopolicy.so", "0689c5dd433e466bc5766ea88f85e5daa7112d2c", "3fc5b5d8460ebd4a9a9ab1f28d959af04df98781"));
    set_progress(0.872628);
    assert(apply_patch_check("/system/lib/libbluedroid.so", "f90b7f2028e9a4507c29550497b7ae7f50e12502", "d03ff395c50fb766ab8954eba78b6f5c644ab44c"));
    set_progress(0.872686);
    assert(apply_patch_check("/system/lib/libbluetoothd.so", "7dfebf000820734b54052b3843bc49528c731565", "db1d788ee8ece60662aebb42b4b428555b4c6139"));
    set_progress(0.875923);
    assert(apply_patch_check("/system/lib/libcpt9.so", "cf6844c599ced936518be21b7cc652efbbfb1826", "be9b7e41333e66d8c583387c4345798df0967c60"));
    set_progress(0.878064);
    assert(apply_patch_check("/system/lib/libdrm1.so", "e0ffee1d5b5af68123fc0b01b63f2d48a37e7d8a", "0aacf541d3f19fd6e0402b11422f92f0ced697c9"));
    set_progress(0.878323);
    assert(apply_patch_check("/system/lib/libdrm1_jni.so", "20b09381844d1897461135fa4b8c649934dcecf4", "8123a99aa23d7fd60a9c8c22b1c4aa6c83eac266"));
    set_progress(0.878407);
    assert(apply_patch_check("/system/lib/libdvm.so", "2eb34acc63cbbbfe0abf7112c5ef8ab3f8b916ff", "05d7dc72dc0dcf73a188c78676e08a791919531c"));
    set_progress(0.882610);
    assert(apply_patch_check("/system/lib/libflashplayer.so", "f30dc1e82cad6e53110361b3ce0a26463c3e32c3", "4ea0538ec762b681a11734fbd0ca8e03bc380d1d"));
    set_progress(0.927581);
    assert(apply_patch_check("/system/lib/libgps.so", "940cb7e7abfd0c847c50c10c8cb8da42e29a5fec", "75e2c12b803783503224a9d60462cef61e650ab1"));
    set_progress(0.928197);
    assert(apply_patch_check("/system/lib/libhtc_ril.so", "2a4b3084de08d8cb2d537d7bca32c9cf32828191", "6f8418ec83ecfa3da47561eede2fdef1bccef53b"));
    set_progress(0.931209);
    assert(apply_patch_check("/system/lib/libicudata.so", "1a4899f358c6d70f02917889f5ae7ce8abb45123", "a783dd94116f6ff094521daff35204704faec154"));
    set_progress(0.943431);
    assert(apply_patch_check("/system/lib/libmedia.so", "d0228b39d7f23f53eeaabdaf60dc5484f983a85d", "3cc0c4770d9b7895a0543dbb7632e67b11a6a55d"));
    set_progress(0.945833);
    assert(apply_patch_check("/system/lib/libskia.so", "9e992fbf190cdc2b2e582af65bd19d0f8baffa20", "a2a54c0dfda3bcefff9a89527a5420c136e7ec72"));
    set_progress(0.952666);
    assert(apply_patch_check("/system/lib/libstagefright.so", "dbaaa6861acc2d77e1480f8ed050a1985abbfef5", "de4541245109b996bfb68662ed73febdde8763a2"));
    set_progress(0.957027);
    assert(apply_patch_check("/system/lib/libsurfaceflinger.so", "eaa898a6fb34d10ef19ebe073b1af6b4b517d66c", "7ae6bd32d9557a85955f6221375683720369b7bd"));
    set_progress(0.958071);
    assert(apply_patch_check("/system/lib/libsurfaceflinger_client.so", "c1e1a17c8b32cef6c4cf712f6b8ce62de0050f18", "5f5892b33f9dd7123f82c25e94c468d1556013c5"));
    set_progress(0.958664);
    assert(apply_patch_check("/system/lib/libui.so", "122329c939c77c4ac78f8bf4b41804931d1a9d6d", "6c522eafb28d5d16d9012bedede3d42ae0e77f39"));
    set_progress(0.959181);
    assert(apply_patch_check("/system/lib/libvoAndroid.so", "0e970b2685cd2efd2991337981e5b2cc86a92d71", "c642cec91e75874db1e7217570a392f1256f664b"));
    set_progress(0.960081);
    assert(apply_patch_check("/system/lib/libvoH264Dec.so", "f9454fd8b0350aa3d9a642946c589fde3bfc5df4", "660dd4a41c4ceafae56a768533d4420b9cf95dcc"));
    set_progress(0.960994);
    assert(apply_patch_check("/system/lib/libvoOMXME.so", "1f8256c48781cf652a075ea75436d817377c7368", "72b6f95fe084ec9107891189982a194de83031d4"));
    set_progress(0.961965);
    assert(apply_patch_check("/system/lib/libvoOMXOne.so", "a2b56684186f74bc342f067b3e0bbf47f8f31955", "c02f44c23d65a96066e2bf23c96c36df15d8af03"));
    set_progress(0.964772);
    assert(apply_patch_check("/system/lib/libvoSrcRTSP.so", "e249ebe0f87514440f696b838a63f493804ccb08", "fbb3b7e063db20f1492f4d0625c3fa216e916b85"));
    set_progress(0.967007);
    assert(apply_patch_check("/system/lib/libwebcore.so", "215bff5ffd54b2558f6bde9961522551bfa18c63", "0bc1f8b76ec535b1b7c1e9f6137c27c7c6724abf"));
    set_progress(0.998317);
    assert(apply_patch_check("/system/lib/modules/bcm4329.ko", "c9f9b0034b35d5e0c93572316bf089587ef237e7", "2852c553ed2ac6ae670e8e99e15ac6b2138b5a3a"));
    set_progress(0.999966);
    assert(apply_patch_check("/system/xbin/crasher", "6b6f4f9542ec5e457cd6c682aad9862bd12dde2a", "146fe9677a6f5bf0b9f1b648ee9b261e0a94f579"));
    set_progress(1.000000);
    
    # ---- start making changes here ----
    
    mount("MTD", "userdata", "/data");
    delete_recursive("/data/DxDrm/",
                     "/data/data/com.htc.flashliteplugin/lib/");
    ui_print("Removing unneeded files...");
    delete("/system/app/GSD.apk", "/system/app/GSD.odex",
           "/system/lib/libysshared.so", "/system/customize/AAInfo.txt",
           "/system/etc/iproute2/rt_tables", "/system/xbin/tcpdump",
           "/system/recovery.img");
    show_progress(0.800000, 0);
    ui_print("Patching system files...");
    apply_patch("/system/app/AccountSyncManager.apk", "-",
                7e807f5cfcf0846b3912f532d0b06038e1df75c5, 187343,
                4d3922776d89af26769536fcbdb708ae48ec5d17, package_extract_file("patch/system/app/AccountSyncManager.apk.p"));
    set_progress(0.001112);
    apply_patch("/system/app/AccountSyncManager.odex", "-",
                22f2afa71cea158214d95e21c034a7c31cf644dc, 63048,
                076d6dc7b8b2cb2b6d8d2ff10d3d925d7d2f7923, package_extract_file("patch/system/app/AccountSyncManager.odex.p"));
    set_progress(0.001487);
    apply_patch("/system/app/AppSharing.apk", "-",
                7438fa9de36d9ed6dff08b9cb916e7f4fa6ca58c, 205271,
                d58d5573dd23deb8809766d0e56e0a7b3f91b296, package_extract_file("patch/system/app/AppSharing.apk.p"));
    set_progress(0.002706);
    apply_patch("/system/app/AppSharing.odex", "-",
                d263953be3c8ab369bb53176d756f505f20cdc3e, 37808,
                f47338c1d2a378781825224e43bee5a181cda150, package_extract_file("patch/system/app/AppSharing.odex.p"));
    set_progress(0.002930);
    apply_patch("/system/app/ApplicationsProvider.odex", "-",
                cd3e29a7c8d3813ec9b956beee0fab8e9f684c1f, 22224,
                cb2e09ada6ad7d15110959b540936f589bbf4410, package_extract_file("patch/system/app/ApplicationsProvider.odex.p"));
    set_progress(0.003062);
    apply_patch("/system/app/Bluetooth.apk", "-",
                644401cb4a35a40eb5b465fe6229dfad918bae5c, 185634,
                9a21334cc33086fe5d651a15aad39e45d31692a0, package_extract_file("patch/system/app/Bluetooth.apk.p"));
    set_progress(0.004164);
    apply_patch("/system/app/Bluetooth.odex", "-",
                02333aaec0602a022ddcf54755dcaeed2fe04e9f, 241256,
                eedf6cb7280e239e358d1086d0a4117d17608414, package_extract_file("patch/system/app/Bluetooth.odex.p"));
    set_progress(0.005597);
    apply_patch("/system/app/BrcmBluetoothServices.odex", "-",
                1cf6e544f092e962766c935d76f61381f7f3bdcc, 8384,
                163b6926068f4d671ba0373de964cf959de6957b, package_extract_file("patch/system/app/BrcmBluetoothServices.odex.p"));
    set_progress(0.005646);
    apply_patch("/system/app/Browser.apk", "-",
                b4d8b21214dc6ab611e0c92ed3e6c0ba4db77f58, 813565,
                7483b1286a4aeca99e07765350a126b327d8791c, package_extract_file("patch/system/app/Browser.apk.p"));
    set_progress(0.010477);
    apply_patch("/system/app/Browser.odex", "-",
                1d088dde86ea04bffd5384361a0c2d7e0b5a8f4d, 785832,
                fcd083534017142f348bdfe98e0adb3e682074c7, package_extract_file("patch/system/app/Browser.odex.p"));
    set_progress(0.015143);
    apply_patch("/system/app/Calculator.odex", "-",
                79b46a0ee2ce266b8e31e9088035cba3dd5e12d3, 108448,
                84c1ffc2c1d33293f38ba884dcc6990f0ac8f484, package_extract_file("patch/system/app/Calculator.odex.p"));
    set_progress(0.015787);
    apply_patch("/system/app/Calendar.apk", "-",
                e3e9df845a25678de63773f160d3fe152e4857ce, 876512,
                9bbd119b1a25c3d5efa2695dda28931746a41347, package_extract_file("patch/system/app/Calendar.apk.p"));
    set_progress(0.020991);
    apply_patch("/system/app/Calendar.odex", "-",
                d8bdf0b68f28c4ee698f747b3b206a400d3977b4, 761520,
                44a88e64d1e26c6322475243225ed283ec52d6c3, package_extract_file("patch/system/app/Calendar.odex.p"));
    set_progress(0.025513);
    apply_patch("/system/app/CalendarProvider.odex", "-",
                943e571ed40f4b314331d2eb3f9a4fa4cd3a0406, 927472,
                83c01aac4563b20df789b775319e9cb17dcc3524, package_extract_file("patch/system/app/CalendarProvider.odex.p"));
    set_progress(0.031020);
    apply_patch("/system/app/CertInstaller.apk", "-",
                edd42d84caf5bd25a676d85507bf3b7c5b940fd2, 54056,
                e614c2780aafeb0dc61564ba0c91460838261c71, package_extract_file("patch/system/app/CertInstaller.apk.p"));
    set_progress(0.031341);
    apply_patch("/system/app/CertInstaller.odex", "-",
                d0bece9a78efcc5549b729fda2b6436005fe40f6, 40624,
                18f1720c37d5b9bda8effcdb990128e532867221, package_extract_file("patch/system/app/CertInstaller.odex.p"));
    set_progress(0.031582);
    apply_patch("/system/app/CheckinProvider.apk", "-",
                00904576ac1d276d67137175b84c8c8e41850e2e, 4727,
                481ad1de7c5f31469b6ac3b0e5be8b72c6eb80e6, package_extract_file("patch/system/app/CheckinProvider.apk.p"));
    set_progress(0.031610);
    apply_patch("/system/app/CheckinProvider.odex", "-",
                9dfb7d7eb4bd6a39de092c85316dbf9f4e5ae17a, 101424,
                1f266194f5aeb44372eef3087b88b63a1cd85abb, package_extract_file("patch/system/app/CheckinProvider.odex.p"));
    set_progress(0.032212);
    apply_patch("/system/app/Clicker.odex", "-",
                7dea1d819e251b9bed5ad91ddeef5b33593df244, 91944,
                8f882b28a0b785d3c13aa327a841f02ee545bbee, package_extract_file("patch/system/app/Clicker.odex.p"));
    set_progress(0.032758);
    apply_patch("/system/app/ContactsProvider.apk", "-",
                a04643e71a85e13b74a2bb714c22c04608b52444, 33427,
                ee65d3068ec6167e88ccbd9a64ea45856d5da3ab, package_extract_file("patch/system/app/ContactsProvider.apk.p"));
    set_progress(0.032956);
    apply_patch("/system/app/ContactsProvider.odex", "-",
                1e4b4ca83cce50c903cdd61abcec99c393efa2c5, 659128,
                f37c163f8ff9961e3b4b32b768796dad7f43b6cb, package_extract_file("patch/system/app/ContactsProvider.odex.p"));
    set_progress(0.036870);
    apply_patch("/system/app/CustomizationSettingsProvider.odex", "-",
                670836bd1f10e19c8cd231301dcddda94bc8c034, 7712,
                25844c45edc1f16e9af40bc1145cac3fdd58eb0e, package_extract_file("patch/system/app/CustomizationSettingsProvider.odex.p"));
    set_progress(0.036916);
    apply_patch("/system/app/CustomizationSetup.odex", "-",
                6890f7906e64d881b8da5227ceab3bd47361b6d0, 83984,
                7f86184b56fe2478e45f02a56d4e3ed88999850c, package_extract_file("patch/system/app/CustomizationSetup.odex.p"));
    set_progress(0.037415);
    apply_patch("/system/app/DCSImpl.odex", "-",
                1068a2a84020e381b21f99e3eb6272fc3c46b411, 23000,
                fde322c9254d5ab06cb840cf1030100ca2528a7e, package_extract_file("patch/system/app/DCSImpl.odex.p"));
    set_progress(0.037551);
    apply_patch("/system/app/DCSStock.odex", "-",
                e25a96171fdcc200d31bf0d85590f9f171c9cbd9, 40576,
                c5a232b2dc0de6fedbca4c9f06028497cf5fc343, package_extract_file("patch/system/app/DCSStock.odex.p"));
    set_progress(0.037792);
    apply_patch("/system/app/DCSUtility.odex", "-",
                e56ad4ab924d58e13d8bb142c6bde04ab4f42d08, 27288,
                85c79cb6bd14bac69850b5d92cc195736840ca75, package_extract_file("patch/system/app/DCSUtility.odex.p"));
    set_progress(0.037954);
    apply_patch("/system/app/DebugTool.odex", "-",
                71151cfb519ab34f5499eeeb8baef24ae8265d0b, 19480,
                730f914aa22fb3044c78902a84d14cbb3b08f390, package_extract_file("patch/system/app/DebugTool.odex.p"));
    set_progress(0.038070);
    apply_patch("/system/app/DefaultContainerService.odex", "-",
                545e38a3b1c1320e8336dc25b5af691fdc88d29a, 13584,
                365a64d539b860a6860338e313c02e342731590b, package_extract_file("patch/system/app/DefaultContainerService.odex.p"));
    set_progress(0.038150);
    apply_patch("/system/app/DownloadProvider.apk", "-",
                d31826810a56bf26950f8ffe8ce41b9911ee628b, 55991,
                7425d2d9c07e0b8409c4cd8d7ece2d1eccd830e2, package_extract_file("patch/system/app/DownloadProvider.apk.p"));
    set_progress(0.038483);
    apply_patch("/system/app/DownloadProvider.odex", "-",
                38aa63928dda7358bef62267354caa57518763f5, 116008,
                78df092c63b3bd62034ae456488502343b65c1ab, package_extract_file("patch/system/app/DownloadProvider.odex.p"));
    set_progress(0.039172);
    apply_patch("/system/app/DrmProvider.odex", "-",
                3ae8dcf1e13f22ee2c39760480d4307d5b4597e5, 56496,
                473d37ed17b8ce6c29faabac8bae9ddaddcee5e3, package_extract_file("patch/system/app/DrmProvider.odex.p"));
    set_progress(0.039507);
    apply_patch("/system/app/Facebook.apk", "-",
                0d3228f8e366757129ef9a1dd8e268e1d6bdb0e6, 1647788,
                7e13aab7c512bd25c5c88386917ce9a5be307e4f, package_extract_file("patch/system/app/Facebook.apk.p"));
    set_progress(0.049291);
    apply_patch("/system/app/Facebook.odex", "-",
                1372baf553775838dd0359dcdfcfc6b8f55d7a7c, 1130104,
                ce9f717078f74a991bed763f83f19cb6509d2dc3, package_extract_file("patch/system/app/Facebook.odex.p"));
    set_progress(0.056001);
    apply_patch("/system/app/FieldTest.odex", "-",
                db90cdfd5899d67f3649e70eab817ea8f61159ea, 96448,
                6758f602aa6a8db9138db1bcb0b7d35202bc1355, package_extract_file("patch/system/app/FieldTest.odex.p"));
    set_progress(0.056574);
    apply_patch("/system/app/FilePicker.apk", "-",
                3a7d71c537363b1e38c3f61df78c10b1fe294bc0, 35422,
                fc78428af39458a5448f333c4ee1bffd1bc77907, package_extract_file("patch/system/app/FilePicker.apk.p"));
    set_progress(0.056784);
    apply_patch("/system/app/FilePicker.odex", "-",
                f5be3c62366d1e3ab0a8a1e297564daa44a8f3ea, 4184,
                b29d1784744db0c625f0468899f145d378ff03e3, package_extract_file("patch/system/app/FilePicker.odex.p"));
    set_progress(0.056809);
    apply_patch("/system/app/Flashlight.apk", "-",
                a1b70e721df7bdd8c4fb81c900decf49864a5d29, 729055,
                28386e5ea5a8fd16c1d78f5ef54ed93322e597ed, package_extract_file("patch/system/app/Flashlight.apk.p"));
    set_progress(0.061138);
    apply_patch("/system/app/Flashlight.odex", "-",
                4b1b1876c1e78d2757947646a0f3c8637636e6e4, 23272,
                0655aa355fa0b6f609e63f73961259d6f9442a0c, package_extract_file("patch/system/app/Flashlight.odex.p"));
    set_progress(0.061276);
    apply_patch("/system/app/Flickr.apk", "-",
                60d284ece402ad14f9998d45bc35ef184b2425a8, 127971,
                1209ba1708256e59fe1b8d4f416276b871e7ae08, package_extract_file("patch/system/app/Flickr.apk.p"));
    set_progress(0.062036);
    apply_patch("/system/app/Flickr.odex", "-",
                06fb60efc9ff59c948e35242792bcd47baab4bc1, 205032,
                1b8c2202f8ce98c1961a5a2e7db63f00cfe0618f, package_extract_file("patch/system/app/Flickr.odex.p"));
    set_progress(0.063253);
    apply_patch("/system/app/FriendStream.apk", "-",
                8692a695d5f7ccef57ca6d35cf0b9bebbb126a52, 86468,
                e5d2e4b6f22a6c9dc06dd2b961d8fe8ba24fb2e2, package_extract_file("patch/system/app/FriendStream.apk.p"));
    set_progress(0.063766);
    apply_patch("/system/app/FriendStream.odex", "-",
                748ddf31846824378a399373cb7706542f29e8b8, 100912,
                cd08cbd40f5745c5750362be3fe9cce8fcd195cc, package_extract_file("patch/system/app/FriendStream.odex.p"));
    set_progress(0.064366);
    apply_patch("/system/app/GenieWidget.odex", "-",
                e0ffc773b4b753874cfd7d9d37f4e9c1fc8c49b5, 470840,
                bb03be1a69cca5624bdf18bff8edabbf8629668f, package_extract_file("patch/system/app/GenieWidget.odex.p"));
    set_progress(0.067161);
    apply_patch("/system/app/Gmail.odex", "-",
                aa5160f44177629bfa9a649365412843edad7ba0, 703632,
                bb64a8fd6d2a3b93bbcadd9835c4eaf72bf216bd, package_extract_file("patch/system/app/Gmail.odex.p"));
    set_progress(0.071339);
    apply_patch("/system/app/GoogleCalendarSyncAdapter.odex", "-",
                cebe8780bfcdc8a82ad99bb22002fe1c951c24b8, 251720,
                5711b8979e8a69755254a00de8ee2364121e2417, package_extract_file("patch/system/app/GoogleCalendarSyncAdapter.odex.p"));
    set_progress(0.072834);
    apply_patch("/system/app/GoogleContactsSyncAdapter.odex", "-",
                a04fdbea1283544de78a40b68eae30c393e776f0, 293248,
                4a4c65a3118d517a38f1651e7a5cd67013d04e63, package_extract_file("patch/system/app/GoogleContactsSyncAdapter.odex.p"));
    set_progress(0.074575);
    apply_patch("/system/app/GoogleFeedback.odex", "-",
                389fd0ff7800954a01d842c254491a77fa2ff0be, 86032,
                7024ea2fd4d0025dfb8520cc3e4ad235a245d90c, package_extract_file("patch/system/app/GoogleFeedback.odex.p"));
    set_progress(0.075086);
    apply_patch("/system/app/GooglePartnerSetup.odex", "-",
                b4992f79ce3f60af2e7faf7ebe9f2215bfed73df, 10672,
                6fe5df839d153dc6dfe918a30f18cd3581a3ebfd, package_extract_file("patch/system/app/GooglePartnerSetup.odex.p"));
    set_progress(0.075149);
    apply_patch("/system/app/GoogleQuickSearchBox.odex", "-",
                d9fd14204876281ec383e3ece4415d40de705875, 354352,
                b24552009d6f19ef0232f951f4afaebaad894bb1, package_extract_file("patch/system/app/GoogleQuickSearchBox.odex.p"));
    set_progress(0.077253);
    apply_patch("/system/app/GoogleServicesFramework.odex", "-",
                bf45f449f76066fb6cad891ffae962fc32587826, 1236264,
                99992563f0764604d17e1e41ee8c59dc48b4066c, package_extract_file("patch/system/app/GoogleServicesFramework.odex.p"));
    set_progress(0.084593);
    apply_patch("/system/app/HTCAlbum.apk", "-",
                a4a09534b3b473d3566c4d6fb099666420d73d09, 561670,
                bf2bf8abfc357d4d49e710e1b97051200e93352d, package_extract_file("patch/system/app/HTCAlbum.apk.p"));
    set_progress(0.087928);
    apply_patch("/system/app/HTCAlbum.odex", "-",
                0ef63a45cc01f153b88f76361f9503dc3f6ab21c, 1330648,
                94a6168c3bb32483c123779cd53a45d5ab21620e, package_extract_file("patch/system/app/HTCAlbum.odex.p"));
    set_progress(0.095829);
    apply_patch("/system/app/HTCCamera.apk", "-",
                f0b8afa8199ef85923faf81308b3d677f57ec892, 615388,
                221832ce1ddf147f7e2aeb83efde928274af26e2, package_extract_file("patch/system/app/HTCCamera.apk.p"));
    set_progress(0.099483);
    apply_patch("/system/app/HTCCamera.odex", "-",
                007d734249de79b6fdcfda4bb6aba4255d10aa7d, 666872,
                1497c8b3bf2369d8c4f55213827da8ace7e3f2be, package_extract_file("patch/system/app/HTCCamera.odex.p"));
    set_progress(0.103443);
    apply_patch("/system/app/HTCSetupWizard.apk", "-",
                b6b6d6b121178832fc41d1983d6bcba44758c184, 1435633,
                6310d837e1115d2796d64ea8823806fed8fed095, package_extract_file("patch/system/app/HTCSetupWizard.apk.p"));
    set_progress(0.111967);
    apply_patch("/system/app/HTCSetupWizard.odex", "-",
                6b208152a1f30c93ed12415606f031b14da6e7ab, 203608,
                5e8afa53d0129a42f550beaf1583e8fe68399841, package_extract_file("patch/system/app/HTCSetupWizard.odex.p"));
    set_progress(0.113176);
    apply_patch("/system/app/HTC_IME.apk", "-",
                ef030cb3898dc1ee56dd2cf1eb07843dd845dcb5, 7543985,
                88507030ee0483de6bb00f3319c3d80d946eed2c, package_extract_file("patch/system/app/HTC_IME.apk.p"));
    set_progress(0.157968);
    apply_patch("/system/app/HTC_IME.odex", "-",
                ddee8f428cd45b0ca2d4714b8427ea9774cca66e, 961272,
                49668494d377e32f1412839b9d290790674e4ff5, package_extract_file("patch/system/app/HTC_IME.odex.p"));
    set_progress(0.163676);
    apply_patch("/system/app/HTMLViewer.odex", "-",
                f64ea700e3fba4e9345188b2bbd0ae51b125cd04, 7680,
                f9c3e287f5e3db43fc6c15052180ea038a6afa07, package_extract_file("patch/system/app/HTMLViewer.odex.p"));
    set_progress(0.163722);
    apply_patch("/system/app/HtcAddProgramWidget.apk", "-",
                ea9768d6c19a8b9e7ad047f94bb9d49dc7efe0fe, 85221,
                f38f86e554e3372ebea2bfe5f7d916337f571a63, package_extract_file("patch/system/app/HtcAddProgramWidget.apk.p"));
    set_progress(0.164228);
    apply_patch("/system/app/HtcAddProgramWidget.odex", "-",
                a3536e2460c5cd99c4b2c732d61b66863f580f4e, 98976,
                5f4d49c916f37653939518de704f805acddb8c31, package_extract_file("patch/system/app/HtcAddProgramWidget.odex.p"));
    set_progress(0.164815);
    apply_patch("/system/app/HtcCalculatorWidget.odex", "-",
                2eca3142c548e9ba2077d8da19d176bb87e7c0bd, 124392,
                569a75218ff215a33f1d160832ef7be89fa394f9, package_extract_file("patch/system/app/HtcCalculatorWidget.odex.p"));
    set_progress(0.165554);
    apply_patch("/system/app/HtcClockWidget.apk", "-",
                568b79c20b5e510f6b0bc08ed01c38e9aff8196f, 1156656,
                2da53b6a8d7e343023030ccbf6249e682b5cb432, package_extract_file("patch/system/app/HtcClockWidget.apk.p"));
    set_progress(0.172422);
    apply_patch("/system/app/HtcClockWidget.odex", "-",
                4c680a0cfe533593058d3caf020ed2825014c99a, 292792,
                f22184ba467269bc82646d236007533a400ca2c3, package_extract_file("patch/system/app/HtcClockWidget.odex.p"));
    set_progress(0.174160);
    apply_patch("/system/app/HtcContacts.apk", "-",
                3abd5ca6d18a7f887df03971bcf7b9bcd98e4ddc, 1920119,
                98a6b6ac68f385f6a38cc72a759e007c278a9354, package_extract_file("patch/system/app/HtcContacts.apk.p"));
    set_progress(0.185561);
    apply_patch("/system/app/HtcContacts.odex", "-",
                419aaf96a810df61cb77ef64bcebdb90551adc09, 1834736,
                3d60e9f0d92eaf1e67ce970bc64ecd28264da312, package_extract_file("patch/system/app/HtcContacts.odex.p"));
    set_progress(0.196455);
    apply_patch("/system/app/HtcCopyright.odex", "-",
                e440c515470908e67dc2f99470e88d1914dba5f6, 2736,
                df9a5733a64319d881ffb361bfd5ebe69e9ef37f, package_extract_file("patch/system/app/HtcCopyright.odex.p"));
    set_progress(0.196471);
    apply_patch("/system/app/HtcDialer.apk", "-",
                487d5423f7b1b0a96337b27cd7b4284a546d3ea3, 1422473,
                8241068681b9aaecd938f17170dbeb916ec9c942, package_extract_file("patch/system/app/HtcDialer.apk.p"));
    set_progress(0.204917);
    apply_patch("/system/app/HtcDialer.odex", "-",
                b80706090575c945e1b75efba319809b06a3a47d, 584840,
                2f310755f731914aa67f65c04f758ce58c40789a, package_extract_file("patch/system/app/HtcDialer.odex.p"));
    set_progress(0.208389);
    apply_patch("/system/app/HtcFMRadio.apk", "-",
                2859332b580d62edfea5e4da56d7574ef949e637, 1107014,
                0925141e2179ce562d5a67190e1dbc7ff0333a7f, package_extract_file("patch/system/app/HtcFMRadio.apk.p"));
    set_progress(0.214962);
    apply_patch("/system/app/HtcFMRadio.odex", "-",
                6311716080b6474b4ec33d8e2ef5e4b7993ff75b, 361584,
                d76da0fa6d798c38f1e24bad867e54b75fa303d4, package_extract_file("patch/system/app/HtcFMRadio.odex.p"));
    set_progress(0.217109);
    apply_patch("/system/app/HtcFacebook.apk", "-",
                95b83dcdaf8d4abae0622ed35567c338e010f652, 245942,
                ed5e2df0023a16c652a5f5a5cd6f77c61514083a, package_extract_file("patch/system/app/HtcFacebook.apk.p"));
    set_progress(0.218570);
    apply_patch("/system/app/HtcFacebook.odex", "-",
                4d5f3aa49a67d80b7adb2bb9f680e1e258c5d609, 281440,
                8d20c3411ef59ab8d1d63be7ede17ea8db80d7c7, package_extract_file("patch/system/app/HtcFacebook.odex.p"));
    set_progress(0.220241);
    apply_patch("/system/app/HtcFootprints.apk", "-",
                4da8614020791a94c1c70a9f3472dd00f51927d9, 1000400,
                a41b4f0f381eef95b95b35488c2a1c48ea02c1fc, package_extract_file("patch/system/app/HtcFootprints.apk.p"));
    set_progress(0.226181);
    apply_patch("/system/app/HtcFootprints.odex", "-",
                b1d2d625ac0d53b86779b4949d502154da5b355a, 585856,
                17722c27ae608e21d75d646608ead42a628ee1a5, package_extract_file("patch/system/app/HtcFootprints.odex.p"));
    set_progress(0.229659);
    apply_patch("/system/app/HtcFootprintsWidget.odex", "-",
                5d41ffb41ead78169ee92388877706501ca4c84b, 240472,
                df5b4a313ea209df1d6af11a4ebab528be230b63, package_extract_file("patch/system/app/HtcFootprintsWidget.odex.p"));
    set_progress(0.231087);
    apply_patch("/system/app/HtcLocationPicker.odex", "-",
                49c466646ef36d4c00a077a4be0d714e426216fd, 84056,
                e3c68f8a8575485e98fd6f89d7251cbcca5e3af0, package_extract_file("patch/system/app/HtcLocationPicker.odex.p"));
    set_progress(0.231586);
    apply_patch("/system/app/HtcLocationService.odex", "-",
                cedd8b2d11abaf1f56581c181f4ed9cdc0fe56d8, 123736,
                6c1f5cc70fdc6aff0d006955efd9255142b022b2, package_extract_file("patch/system/app/HtcLocationService.odex.p"));
    set_progress(0.232321);
    apply_patch("/system/app/HtcLockScreen.apk", "-",
                0d39274108d11f2ed5a61746ebcde111768ac0a8, 815315,
                b456ced1b1ee58edff5c9a07849fb7cd63c6a9e0, package_extract_file("patch/system/app/HtcLockScreen.apk.p"));
    set_progress(0.237162);
    apply_patch("/system/app/HtcLockScreen.odex", "-",
                940cec5fba422ecbcd7eaf69593297b81a703ce3, 125352,
                fd8573c01a0fcc5f8b7f1f1e7dfef1fcb4656833, package_extract_file("patch/system/app/HtcLockScreen.odex.p"));
    set_progress(0.237906);
    apply_patch("/system/app/HtcMessageUploader.odex", "-",
                abc2de5d361c58ebf526aad1b674368b129fc039, 26896,
                46768e2cf1d6f0a25bdf3412de3fca609f90a693, package_extract_file("patch/system/app/HtcMessageUploader.odex.p"));
    set_progress(0.238066);
    apply_patch("/system/app/HtcMusic.apk", "-",
                1c6763f8042025e479ca4be8e418f7936b7d65f4, 876011,
                41485d0d6909eecc7cd370d70e133556239da958, package_extract_file("patch/system/app/HtcMusic.apk.p"));
    set_progress(0.243267);
    apply_patch("/system/app/HtcMusic.odex", "-",
                18d0c7de52d822d0839587eeb45f5307811b7bb1, 772792,
                cca528919efe3b1c6aa896e954bc22737b05915d, package_extract_file("patch/system/app/HtcMusic.odex.p"));
    set_progress(0.247855);
    apply_patch("/system/app/HtcPhotoWidget.apk", "-",
                618fedb9863d53af3777c8f574bd5986329a9eea, 1063213,
                3c9cfd859c82da31383c26db268ade297b33488f, package_extract_file("patch/system/app/HtcPhotoWidget.apk.p"));
    set_progress(0.254168);
    apply_patch("/system/app/HtcPhotoWidget.odex", "-",
                e4c890c6118f9feada1b67e91e9e60d0bccfc8e6, 108528,
                adc1a5531812299805579cac87a9f00ec1781465, package_extract_file("patch/system/app/HtcPhotoWidget.odex.p"));
    set_progress(0.254813);
    apply_patch("/system/app/HtcProfilesWidget.odex", "-",
                a077c6e749f95d9e718dcddc90c302269c4cccb2, 17736,
                6f6b49e4dd27dccf1470abc5d34c970451a2eb9e, package_extract_file("patch/system/app/HtcProfilesWidget.odex.p"));
    set_progress(0.254918);
    apply_patch("/system/app/HtcRingtoneTrimmer.apk", "-",
                e17a495445a7164fe12646dfd1f53b58b6185780, 235090,
                438a3a4640dcc3b4c05e3b3cbb96aca2b715bfcc, package_extract_file("patch/system/app/HtcRingtoneTrimmer.apk.p"));
    set_progress(0.256314);
    apply_patch("/system/app/HtcRingtoneTrimmer.odex", "-",
                090bb6bb5b9a68ea31deb61d2c3e3587e0734e7a, 102368,
                9bd39059d7a51f3e7145c69eb0446258364d2890, package_extract_file("patch/system/app/HtcRingtoneTrimmer.odex.p"));
    set_progress(0.256922);
    apply_patch("/system/app/HtcRingtoneWidget.odex", "-",
                ae34355b04a8a439e254f1425556fbdb323b0ed6, 12576,
                be7b1f16e3e33ecd49db7a596e8478cc9bc16d72, package_extract_file("patch/system/app/HtcRingtoneWidget.odex.p"));
    set_progress(0.256996);
    apply_patch("/system/app/HtcSettingsProvider.odex", "-",
                73b8dde98c04cddee05582434f41c100bcf4393c, 14920,
                11374e987dafb834c5c379b2bde2fbb23506ddba, package_extract_file("patch/system/app/HtcSettingsProvider.odex.p"));
    set_progress(0.257085);
    apply_patch("/system/app/HtcSoundRecorder.apk", "-",
                a0158471c1df4ebf0dbc4d13075f6b36f26f4ed4, 514486,
                e0279d51308ee50cf980ba139dd3ddbcad9f7c87, package_extract_file("patch/system/app/HtcSoundRecorder.apk.p"));
    set_progress(0.260140);
    apply_patch("/system/app/HtcSoundRecorder.odex", "-",
                200018e80416b953d68f91d45c2ba5657d16de26, 296960,
                a6e7f6eaa150760403aee0d72377da7707822755, package_extract_file("patch/system/app/HtcSoundRecorder.odex.p"));
    set_progress(0.261903);
    apply_patch("/system/app/HtcStreamPlayer.odex", "-",
                589bf6fa9f37b4168b09a95d24e93c4dcb579359, 146752,
                125a8d37dca69a1cba3d57695708737feeec00c8, package_extract_file("patch/system/app/HtcStreamPlayer.odex.p"));
    set_progress(0.262774);
    apply_patch("/system/app/HtcSyncwidget.odex", "-",
                551b27f17c91bf562dd10aca3d9888d36033bc27, 16216,
                11b9a07b5a5b8cbdceb054f7e954d9b5861b8f13, package_extract_file("patch/system/app/HtcSyncwidget.odex.p"));
    set_progress(0.262871);
    apply_patch("/system/app/HtcTwitter.apk", "-",
                fbfefd02b7f9cab41a4a2630acb555ae4e69f181, 511532,
                a146aa36893f93c15f9c183a5ca4f3ab6a5ab366, package_extract_file("patch/system/app/HtcTwitter.apk.p"));
    set_progress(0.265908);
    apply_patch("/system/app/HtcTwitter.odex", "-",
                91a4a6c9105554bfe828abf54291cb64b13db641, 509160,
                64ae8d94afd694b8730c2b27b4508b3b5d29a5b1, package_extract_file("patch/system/app/HtcTwitter.odex.p"));
    set_progress(0.268931);
    apply_patch("/system/app/HtcWeatherWallpaper.odex", "-",
                557ddea9dbe50e0f9472da34a127c5f558723f1d, 151416,
                5754bcfe669b6db92f8bd9e67e44a85f43e96692, package_extract_file("patch/system/app/HtcWeatherWallpaper.odex.p"));
    set_progress(0.269830);
    apply_patch("/system/app/LiveWallpapers.odex", "-",
                2912e4dd9da2d72a7a16bd985e48fdd9f4dee012, 72152,
                dc7f9193272460f58db6795a517adddf3b08657e, package_extract_file("patch/system/app/LiveWallpapers.odex.p"));
    set_progress(0.270258);
    apply_patch("/system/app/LiveWallpapersPicker.odex", "-",
                6c06fd4d705dc90b502acad2a15ee30f140dcb8a, 21240,
                7fb165b5fc836b2875c9e0ce7950e93c901ee90f, package_extract_file("patch/system/app/LiveWallpapersPicker.odex.p"));
    set_progress(0.270385);
    apply_patch("/system/app/MagicSmokeWallpapers.odex", "-",
                56f2ee3d992cbe17392df3d4a46ce1f97ba3cbd0, 25048,
                426a1bcccd598195e4e3604b6f3651c12f83b06b, package_extract_file("patch/system/app/MagicSmokeWallpapers.odex.p"));
    set_progress(0.270533);
    apply_patch("/system/app/Mail.apk", "-",
                e023e696fd4c11b072c7193d937ab612b598bd97, 1785700,
                258219b37bc3ca5d73373663e4f99af68f7e49e2, package_extract_file("patch/system/app/Mail.apk.p"));
    set_progress(0.281136);
    apply_patch("/system/app/Mail.odex", "-",
                89bd7924816561cbf805dc7afb77903003ea842b, 2945816,
                cd44316fe0590aa4723d2a8599b16cbe963aed41, package_extract_file("patch/system/app/Mail.odex.p"));
    set_progress(0.298627);
    apply_patch("/system/app/MarketUpdater.odex", "-",
                dc4ea2678084ba4b1bcd1570ae425a445e44a2c1, 3336,
                8308f75ee3e765db78f45f7e160b2f09dea4a96e, package_extract_file("patch/system/app/MarketUpdater.odex.p"));
    set_progress(0.298647);
    apply_patch("/system/app/MediaProvider.odex", "-",
                27f4699cee64ddb5692220bb865e70547916b444, 111120,
                f69c9029031627196f0b3e689d226cf3bbebfc79, package_extract_file("patch/system/app/MediaProvider.odex.p"));
    set_progress(0.299306);
    apply_patch("/system/app/MediaUploader.odex", "-",
                ab517e892845410c3eee15c0702d411619b8e9ea, 213696,
                42f05d6b8fae575337f94fd12b085d55d3e2c4eb, package_extract_file("patch/system/app/MediaUploader.odex.p"));
    set_progress(0.300575);
    apply_patch("/system/app/Mms.apk", "-",
                974551f5e387028b0b303c30056267bc93b5e2f5, 1889600,
                d7e3590aaa9a93f1d171182fe67ef3211f6f320d, package_extract_file("patch/system/app/Mms.apk.p"));
    set_progress(0.311795);
    apply_patch("/system/app/Mms.odex", "-",
                fb6a290e365cb6e610d9f3327aa145e3599af810, 1783696,
                56fce182a10f29ae2cc091cf8acb1da2d550b23b, package_extract_file("patch/system/app/Mms.odex.p"));
    set_progress(0.322386);
    apply_patch("/system/app/Mode10Wallpapers.apk", "-",
                ad1b6b0415e8089fbb9b901193a3d67a3e4cb9a6, 727015,
                3a5889465c3d85b617fb3adec076d99c45ddb15a, package_extract_file("patch/system/app/Mode10Wallpapers.apk.p"));
    set_progress(0.326702);
    apply_patch("/system/app/Mode10Wallpapers.odex", "-",
                515c8daf16436249d260d7b9b74b7ece32f666df, 26720,
                805bd085c0f26b88064977b4499b6978a678a06a, package_extract_file("patch/system/app/Mode10Wallpapers.odex.p"));
    set_progress(0.326861);
    apply_patch("/system/app/NetworkLocation.odex", "-",
                26dd47fe76722d2cb1b23f6b14dfd1383992354c, 221664,
                db5d57da7f9a3d139a3f9295d536899c78e1f06c, package_extract_file("patch/system/app/NetworkLocation.odex.p"));
    set_progress(0.328177);
    apply_patch("/system/app/NewsReader.apk", "-",
                90650e5714c9940a9577f50ec6a35f62a3bc1b3e, 467861,
                f6fcb6cac1d9198b651f9eb0053b222ce5767298, package_extract_file("patch/system/app/NewsReader.apk.p"));
    set_progress(0.330955);
    apply_patch("/system/app/NewsReader.odex", "-",
                a5d412a9ad753484da256df691ecac97d7025d6b, 403648,
                edf23e57d23914991f008dcc2be8e412d33a59ef, package_extract_file("patch/system/app/NewsReader.odex.p"));
    set_progress(0.333352);
    apply_patch("/system/app/PCSCII.apk", "-",
                a6625fbd270603cea5f67634d375acf9be492c24, 166396,
                8f24abcacf224439330d2571b559f6746d2ca894, package_extract_file("patch/system/app/PCSCII.apk.p"));
    set_progress(0.334340);
    apply_patch("/system/app/PCSCII.odex", "-",
                1031cd1fe7684b972228dd53a13bd9dd8ddfb39a, 437376,
                97fad90241579961504f4f9ea3cf5b7182eec06e, package_extract_file("patch/system/app/PCSCII.odex.p"));
    set_progress(0.336937);
    apply_patch("/system/app/PDFViewer.apk", "-",
                52460c997d88d540b7c97fccadab0d63954758fa, 159956,
                f8f2efb02380900c97e6f7ccf135d4767cd7fb5b, package_extract_file("patch/system/app/PDFViewer.apk.p"));
    set_progress(0.337886);
    apply_patch("/system/app/PDFViewer.odex", "-",
                b518bf107721fa06d505a1321b372b5eda294a25, 219784,
                5f58ebde1faf73b74a52569d1d2e767231d5ef14, package_extract_file("patch/system/app/PDFViewer.odex.p"));
    set_progress(0.339191);
    apply_patch("/system/app/PackageInstaller.odex", "-",
                16fb042f59eb93573db8797cddd82b2945bd987b, 30312,
                4977f8622f824550acd7b7ac1c0dd900155757eb, package_extract_file("patch/system/app/PackageInstaller.odex.p"));
    set_progress(0.339371);
    apply_patch("/system/app/Phone.apk", "-",
                6229eaf0a8fd31bc8f4a004c333fe3feb82c3ee4, 1844881,
                5b59941671f1bdef725c70269886e9440a7bb2ed, package_extract_file("patch/system/app/Phone.apk.p"));
    set_progress(0.350325);
    apply_patch("/system/app/Phone.odex", "-",
                cd3af21e3d45a39d5792671e9ab80ffb96e8b306, 1009224,
                84361c13a4f6e58eab8aae5117af78b2216ed0b2, package_extract_file("patch/system/app/Phone.odex.p"));
    set_progress(0.356318);
    apply_patch("/system/app/PicoTts.odex", "-",
                35aada9cecee84b4c22e658fcdbacc1675ecb7f4, 14256,
                453ba8825fc9be0f791f38e226fa94a994926766, package_extract_file("patch/system/app/PicoTts.odex.p"));
    set_progress(0.356402);
    apply_patch("/system/app/PluginManager.odex", "-",
                bbfd4cb01a55c378bacbb41145effc55966dc2ad, 26056,
                f54a6c1729180f804b000f6abd3cbae8fb40ab38, package_extract_file("patch/system/app/PluginManager.odex.p"));
    set_progress(0.356557);
    apply_patch("/system/app/QuickLookup.apk", "-",
                5a24f5607d721c93bf758f95ef8a94a0b5c61248, 51387,
                02d7942fd7d8e6124b2145de2903e925ccce75b7, package_extract_file("patch/system/app/QuickLookup.apk.p"));
    set_progress(0.356862);
    apply_patch("/system/app/QuickLookup.odex", "-",
                f308bb905475d914707e6b12bc23fd6a1266ec86, 58544,
                3f23e68d99be8b32a2b1535d8ef88328ed6d1f8d, package_extract_file("patch/system/app/QuickLookup.odex.p"));
    set_progress(0.357210);
    apply_patch("/system/app/Quickoffice.apk", "-",
                1ff72cd4b1920d8855c750f047b08d279129b7d9, 1098381,
                cd8e3a9f2bdeb6bfb593c2e76add5a4842103c98, package_extract_file("patch/system/app/Quickoffice.apk.p"));
    set_progress(0.363732);
    apply_patch("/system/app/Quickoffice.odex", "-",
                2bfc58fa2f4decfa73a04c7f74da83eec7b97b60, 5286736,
                3b165396138d06a9800e8081bc1c33b28ded86a5, package_extract_file("patch/system/app/Quickoffice.odex.p"));
    set_progress(0.395122);
    apply_patch("/system/app/QxdmLog.odex", "-",
                acc06f0352537bc4882e97e15fbf1ba2c773dae2, 9464,
                7300f302ee0d70edadf9f3f2219d7c58e470bb9a, package_extract_file("patch/system/app/QxdmLog.odex.p"));
    set_progress(0.395178);
    apply_patch("/system/app/RSS.odex", "-",
                a2af8aa86988a7e142febc6fc2d9adf7c072882e, 533072,
                3859ec039000ce5aef8a3032b804beec0e81f19b, package_extract_file("patch/system/app/RSS.odex.p"));
    set_progress(0.398343);
    apply_patch("/system/app/Rosie.apk", "-",
                f1cbf44f955ac4ed691dbd5ef9244ef9a20bff85, 907566,
                f2ee03a9a13ade3aac56fd9edc4ef3d4ec9068d9, package_extract_file("patch/system/app/Rosie.apk.p"));
    set_progress(0.403732);
    apply_patch("/system/app/Rosie.odex", "-",
                5850bb3f4b9356396afad1b35d99828f4efcd732, 687416,
                c157bf7552446df2c35139482ed4f0072c155386, package_extract_file("patch/system/app/Rosie.odex.p"));
    set_progress(0.407813);
    apply_patch("/system/app/Settings.apk", "-",
                2d770810d501d373a3f7f9e9937fefdc829fc44d, 4691357,
                da1465513b14d365ac12a382f39dd2a948fb471a, package_extract_file("patch/system/app/Settings.apk.p"));
    set_progress(0.435669);
    apply_patch("/system/app/Settings.odex", "-",
                f2eaf09cee952975d206a4b090341ce67bac7a87, 1242816,
                4ee78c39b19d6a706a82543fdc1848b4e3ceda72, package_extract_file("patch/system/app/Settings.odex.p"));
    set_progress(0.443048);
    apply_patch("/system/app/SettingsProvider.apk", "-",
                383feb2bcc81dd548b0d041481a9c42cfb188223, 18901,
                7497deaf55d77105220b0cf580f378b816f283c3, package_extract_file("patch/system/app/SettingsProvider.apk.p"));
    set_progress(0.443160);
    apply_patch("/system/app/SettingsProvider.odex", "-",
                5ea3d43aef25b1cf40543011b18e110ca4eac403, 71840,
                0db39b6aa50fd868f9b16109e6829221c00f76b1, package_extract_file("patch/system/app/SettingsProvider.odex.p"));
    set_progress(0.443587);
    apply_patch("/system/app/SetupWizard.odex", "-",
                61b2d95ed3cc56d3cb758dddaed99a7aa44db711, 89768,
                ceaa1b882ce88491ab09f68141e7689e6f1df477, package_extract_file("patch/system/app/SetupWizard.odex.p"));
    set_progress(0.444120);
    apply_patch("/system/app/SocialNetworkProvider.odex", "-",
                8002127868aa998ad7513d9521636cdbb3e19077, 122800,
                73b240e6acde8215eae5d235c4d02d8712e20855, package_extract_file("patch/system/app/SocialNetworkProvider.odex.p"));
    set_progress(0.444849);
    apply_patch("/system/app/Stk.apk", "-",
                c614cbbaf2df707e8792e207d36e0125c2de2521, 43799,
                2035850d260fa916684ceff53c8f6fa2123f060b, package_extract_file("patch/system/app/Stk.apk.p"));
    set_progress(0.445109);
    apply_patch("/system/app/Stk.odex", "-",
                eb34f1437c0d312774f6b9b117e1bdeb3c691261, 52360,
                f6323573b6aa28549ef86ee6c6ff8e2c89e1bcf9, package_extract_file("patch/system/app/Stk.odex.p"));
    set_progress(0.445420);
    apply_patch("/system/app/Stock.apk", "-",
                5a3f7d7199cca3ba9e43ed0357f3a0d78f9d2363, 452691,
                ec4684295dcef43010d1c91e38c8d211a7c7ada8, package_extract_file("patch/system/app/Stock.apk.p"));
    set_progress(0.448108);
    apply_patch("/system/app/Stock.odex", "-",
                36e6c55722c5351766d6455222ec5c2e0e70903a, 196936,
                cf63ff8d8b4b0a44d7efc18a2a024886b54e1f89, package_extract_file("patch/system/app/Stock.odex.p"));
    set_progress(0.449277);
    apply_patch("/system/app/Street.odex", "-",
                f06ce7d5b14e1df329a1c65f73a4e3a86cd6c64a, 286584,
                1fd3b69dbf5e96ad56c1e7d2fd782a9fec2a0497, package_extract_file("patch/system/app/Street.odex.p"));
    set_progress(0.450979);
    apply_patch("/system/app/Talk.odex", "-",
                5e0d4d0b54912384ade197f9f3833aaeb8a2cd88, 500896,
                4e77f8be1c724b57fd039b6b4e2fb91cc3c5cc0a, package_extract_file("patch/system/app/Talk.odex.p"));
    set_progress(0.453953);
    apply_patch("/system/app/TelephonyProvider.apk", "-",
                64f11302a21646bf74ca0a07746197d59b39ccdb, 26424,
                36c8942463dc949282dfe9ff072002d964e64322, package_extract_file("patch/system/app/TelephonyProvider.apk.p"));
    set_progress(0.454110);
    apply_patch("/system/app/TelephonyProvider.odex", "-",
                b7f05a170c6f8560cfb3a75ee7ef9e35a2fb1951, 339664,
                3a80c3abf1615ad6d599cada5f5eb986eeae04a8, package_extract_file("patch/system/app/TelephonyProvider.odex.p"));
    set_progress(0.456126);
    apply_patch("/system/app/TtsService.odex", "-",
                d38fb4ec654080662b9b1611b3b7ca299de01202, 37592,
                2032779b4fa83b91497f49c2c9c5b5e25ba9d8b2, package_extract_file("patch/system/app/TtsService.odex.p"));
    set_progress(0.456349);
    apply_patch("/system/app/Updater.apk", "-",
                999d06fd3cfc7cb1f2e0ba3fd833064b59934de3, 287659,
                d4c1efcb1d618210864f392d2e5f6ea862469060, package_extract_file("patch/system/app/Updater.apk.p"));
    set_progress(0.458057);
    apply_patch("/system/app/Updater.odex", "-",
                fa536bd55c395c7ae16ed494e01d969662076501, 126768,
                451595f5abedf0bbb0b9222fb7dafd183063c2df, package_extract_file("patch/system/app/Updater.odex.p"));
    set_progress(0.458810);
    apply_patch("/system/app/UpgradeSetup.odex", "-",
                6c2c5bd08626c90f220b78661315241df240610b, 12392,
                20aa5a9c7975dddcf0b1c7671ad5f3d5c0f6ef17, package_extract_file("patch/system/app/UpgradeSetup.odex.p"));
    set_progress(0.458884);
    apply_patch("/system/app/UploadProvider.apk", "-",
                bfa34165e604970ea1963498b87c926151b44fad, 135908,
                79a61597322ac418050ff155efac16cdda387927, package_extract_file("patch/system/app/UploadProvider.apk.p"));
    set_progress(0.459691);
    apply_patch("/system/app/UploadProvider.odex", "-",
                28d5aabf4954822ba1c2a8afc51f9f06d4215fdd, 153072,
                ac75d4ad815dd8f849536b32351ac1ea25fe2791, package_extract_file("patch/system/app/UploadProvider.odex.p"));
    set_progress(0.460600);
    apply_patch("/system/app/UserDictionaryProvider.odex", "-",
                e78ea01600e8c2fe4839807cc21662db4f60dc8a, 15576,
                d070137cd40650941b726efdcc6be44f2bc3fe05, package_extract_file("patch/system/app/UserDictionaryProvider.odex.p"));
    set_progress(0.460692);
    apply_patch("/system/app/Vending.odex", "-",
                1a5743eab120c1f6a75f4fdb8d8bc25f85cb8dcd, 877072,
                0ad81435af052774848bc83e57650c2ba33ed6f0, package_extract_file("patch/system/app/Vending.odex.p"));
    set_progress(0.465900);
    apply_patch("/system/app/VisualizationWallpapers.odex", "-",
                29915043c17749c1ceed260412af89685d17f7e4, 32512,
                895d7a066a2f93626bae4c99e0905691d41eff7c, package_extract_file("patch/system/app/VisualizationWallpapers.odex.p"));
    set_progress(0.466093);
    apply_patch("/system/app/VoiceSearch.odex", "-",
                8daabbdf36d505e4bd8cf83a00eb8d43a4c00ec0, 444888,
                2720d324b583e58b8fd500b15094ad3b93b1a517, package_extract_file("patch/system/app/VoiceSearch.odex.p"));
    set_progress(0.468734);
    apply_patch("/system/app/VpnServices.odex", "-",
                e6ab09395e9f97c75bd9cc5fd2806169d64cc8c3, 33328,
                49a6b902bdfbf3de9f6815c585a51f7b85b0ef4a, package_extract_file("patch/system/app/VpnServices.odex.p"));
    set_progress(0.468932);
    apply_patch("/system/app/Weather.apk", "-",
                d0cc6d59ea985a0d0dcb2dc7519fe87e77e90071, 357189,
                f0605cb40efa749406fba64727c698b523605f06, package_extract_file("patch/system/app/Weather.apk.p"));
    set_progress(0.471053);
    apply_patch("/system/app/Weather.odex", "-",
                8b4efe95e293fd700e8ade714ea6d7c3a536cbe3, 191160,
                6e1291ca60e92dd7b6eea2a30d6bdbdef42c7c95, package_extract_file("patch/system/app/Weather.odex.p"));
    set_progress(0.472188);
    apply_patch("/system/app/WeatherAgentService.odex", "-",
                087111e3a9a464a210f91239ee6af00359e185e0, 23832,
                440c7d0955cd1f3ce56f26bd272b3f8155581e9b, package_extract_file("patch/system/app/WeatherAgentService.odex.p"));
    set_progress(0.472330);
    apply_patch("/system/app/WeatherProvider.odex", "-",
                f6ce1e738fe5ac10412f7b7a56183a9d76f0f581, 29040,
                2cbc19774be4509b2c4e0c68fc7083c10770e890, package_extract_file("patch/system/app/WeatherProvider.odex.p"));
    set_progress(0.472502);
    apply_patch("/system/app/WeatherSyncProvider.odex", "-",
                773ad708ffe4145891d624da77c3588e4bbb34ff, 44456,
                414412b8ac0343d0b66657d7e755db98961ef9b3, package_extract_file("patch/system/app/WeatherSyncProvider.odex.p"));
    set_progress(0.472766);
    apply_patch("/system/app/WidgetDownloadManager.odex", "-",
                500187dda9de3ab934512e0331005c9a005e5334, 117856,
                85e8a2aec10ce1a6b8cc50ed0b1f713a5f5ebfa2, package_extract_file("patch/system/app/WidgetDownloadManager.odex.p"));
    set_progress(0.473466);
    apply_patch("/system/app/WifiRouter.apk", "-",
                42b735368dddf32b6a2c65bee18e32901d70bfbc, 312271,
                262590f87e94c54675f652fac79df34b69e2037c, package_extract_file("patch/system/app/WifiRouter.apk.p"));
    set_progress(0.475320);
    apply_patch("/system/app/WifiRouter.odex", "-",
                65f84e29c82ee429d66a049e7d1b4c7a2313dda0, 82440,
                eaf72bc03658ff0f95c1b9e72316c38e030771df, package_extract_file("patch/system/app/WifiRouter.odex.p"));
    set_progress(0.475809);
    apply_patch("/system/app/WorldClock.apk", "-",
                bd952d02c0d45eefc6276863a5b6f4c76e25364b, 645747,
                522690dbd46505d85279839646c786330141a11a, package_extract_file("patch/system/app/WorldClock.apk.p"));
    set_progress(0.479643);
    apply_patch("/system/app/WorldClock.odex", "-",
                c3ce3e20eff8a7fce155228e60a790dce38192f3, 387160,
                a21eba2892aca4a71d4da56e66de450e24a747d0, package_extract_file("patch/system/app/WorldClock.odex.p"));
    set_progress(0.481942);
    apply_patch("/system/app/YouTube.odex", "-",
                14901bde8fc5292763ba4e423e38c54a880f173a, 378016,
                c5a32cfebfc05379a3162c9368a25f90f62c9278, package_extract_file("patch/system/app/YouTube.odex.p"));
    set_progress(0.484187);
    apply_patch("/system/app/com.htc.FMRadioWidget.apk", "-",
                22e42d5fc55e1254ae7d712b4197c2c377d3b09f, 1195299,
                c080762554b4ac45d18c8737a6469daa3be4c024, package_extract_file("patch/system/app/com.htc.FMRadioWidget.apk.p"));
    set_progress(0.491284);
    apply_patch("/system/app/com.htc.FMRadioWidget.odex", "-",
                9d7914bb19f7ec2148cd1220bfa0527ed98f1396, 129904,
                95e43d499b1aefa6056063b0f356aaa675e37eba, package_extract_file("patch/system/app/com.htc.FMRadioWidget.odex.p"));
    set_progress(0.492055);
    apply_patch("/system/app/com.htc.FriendStreamWidget.apk", "-",
                16fe640f8d3ca329357ca9d43402ef0b5ad3b62a, 230972,
                79590668e290a34caa2e9a67478470719f67faaf, package_extract_file("patch/system/app/com.htc.FriendStreamWidget.apk.p"));
    set_progress(0.493427);
    apply_patch("/system/app/com.htc.FriendStreamWidget.odex", "-",
                ca01beedd5b3c7d42718372f3e4732a77ce1d497, 81600,
                1c90b5d374e5d4d466f54b152033a5cc5251f150, package_extract_file("patch/system/app/com.htc.FriendStreamWidget.odex.p"));
    set_progress(0.493911);
    apply_patch("/system/app/com.htc.MusicWidget.apk", "-",
                8a330005c1dbc82056faf5c8d386a87ab51ab14f, 445550,
                bf3cc49ef86c2be2f7e2bfd97bfaa9a3a103a982, package_extract_file("patch/system/app/com.htc.MusicWidget.apk.p"));
    set_progress(0.496557);
    apply_patch("/system/app/com.htc.MusicWidget.odex", "-",
                d1f21d2a2f05271659dcdd64f23f7ffa62e22dd4, 83664,
                19ed18c954cd489fc3324f85abd03819de43e3f5, package_extract_file("patch/system/app/com.htc.MusicWidget.odex.p"));
    set_progress(0.497053);
    apply_patch("/system/app/com.htc.NewsReaderWidget.apk", "-",
                1759529529c920219dc93a928ab3bfb32f06a01b, 263740,
                f7b3b6c329732cf03d84744327a85cf6d5836f17, package_extract_file("patch/system/app/com.htc.NewsReaderWidget.apk.p"));
    set_progress(0.498619);
    apply_patch("/system/app/com.htc.NewsReaderWidget.odex", "-",
                d73ef8efd3424040cedfb7871febadae7559fade, 154544,
                86c7945497dc5c12c83c72bd198675667b0d8e04, package_extract_file("patch/system/app/com.htc.NewsReaderWidget.odex.p"));
    set_progress(0.499537);
    apply_patch("/system/app/com.htc.StockWidget.odex", "-",
                8c26893e37292639d8abd92587ef6ddf8db49165, 150912,
                df177719c98b1853469d63ed679372a62a3f0ee7, package_extract_file("patch/system/app/com.htc.StockWidget.odex.p"));
    set_progress(0.500433);
    apply_patch("/system/app/com.htc.TwitterWidget.odex", "-",
                6e556cc6ffbeadeeec5b4731b154f552959605ce, 75656,
                1be3651045f10aa22d008d846a396d13529c19e2, package_extract_file("patch/system/app/com.htc.TwitterWidget.odex.p"));
    set_progress(0.500882);
    apply_patch("/system/app/com.htc.WeatherWidget.apk", "-",
                9d1f5c93ad5b602e1ff5e49797e2a619ff2ab8b7, 385328,
                3f6f6f8f3fec79f01e789606834ac302e3081c2d, package_extract_file("patch/system/app/com.htc.WeatherWidget.apk.p"));
    set_progress(0.503170);
    apply_patch("/system/app/com.htc.WeatherWidget.odex", "-",
                5cc190253f96d3fa41634ec20e096b6a90e6b76b, 148320,
                98c73e8f676c4c4c75bf3e9de326373351056e6d, package_extract_file("patch/system/app/com.htc.WeatherWidget.odex.p"));
    set_progress(0.504051);
    apply_patch("/system/app/htcbookmarkwidget.odex", "-",
                1a02780742c6b998d29afaa50db904839907d4d0, 100072,
                5e4995277bb6ad20dfd1c2cd74e1ea8a3c812b6b, package_extract_file("patch/system/app/htcbookmarkwidget.odex.p"));
    set_progress(0.504645);
    apply_patch("/system/app/htccalendarwidgets.apk", "-",
                5c90ece2d923a15bf07c3dbc1caf4d8202652e24, 226559,
                f598a768c1aab41ce1e1c5afbb221e4e34f22325, package_extract_file("patch/system/app/htccalendarwidgets.apk.p"));
    set_progress(0.505990);
    apply_patch("/system/app/htccalendarwidgets.odex", "-",
                d415394b6e9f1bb6dd761b5c18ccf961e8703daa, 136200,
                7f20b5c44879a8c5209aa9ddd4187aae9cc5d3ec, package_extract_file("patch/system/app/htccalendarwidgets.odex.p"));
    set_progress(0.506799);
    apply_patch("/system/app/htccontactwidgets.apk", "-",
                ea69340dea7e9ea1f9cee02a955623b1a707a0e4, 509940,
                8c6520419aab51d1a35b66e3ce4a15aada0489f2, package_extract_file("patch/system/app/htccontactwidgets.apk.p"));
    set_progress(0.509827);
    apply_patch("/system/app/htccontactwidgets.odex", "-",
                ec2717a4e90aab9cdf3da0bc8b9eae26a4fdc233, 225576,
                08f3365b5e2d57175f167ac230797eecd37df004, package_extract_file("patch/system/app/htccontactwidgets.odex.p"));
    set_progress(0.511166);
    apply_patch("/system/app/htcmailwidgets.apk", "-",
                4ca8a7f08b9d0085e5ceab1e9e7b8e463726130c, 677327,
                0378802fb4e2d7245da5b27f932f556e996e3033, package_extract_file("patch/system/app/htcmailwidgets.apk.p"));
    set_progress(0.515188);
    apply_patch("/system/app/htcmailwidgets.odex", "-",
                d945a0d7089c3d32b5c715e1ee2b6fa02c4b9140, 244720,
                21e9c261354b86fba9f46fc2f17adf2020e3977b, package_extract_file("patch/system/app/htcmailwidgets.odex.p"));
    set_progress(0.516641);
    apply_patch("/system/app/htcmsgwidgets.apk", "-",
                6a773afd16caee1bb3fb2620150233c2914af706, 319629,
                5450eb821fda0a7281781d89ae4fdab531cb47ce, package_extract_file("patch/system/app/htcmsgwidgets.apk.p"));
    set_progress(0.518539);
    apply_patch("/system/app/htcmsgwidgets.odex", "-",
                37846c88e2dd9a75cd3b3e3210cbcf82ba9cf7f1, 125184,
                6fcd350859d6a39fc553544d3c5ab163f4a344e0, package_extract_file("patch/system/app/htcmsgwidgets.odex.p"));
    set_progress(0.519282);
    apply_patch("/system/app/htcsettingwidgets.apk", "-",
                3e27ee266a9487183a8563208f6106a1637fb600, 198288,
                7861ce346c407fecc08d44d62df1994a543e80a4, package_extract_file("patch/system/app/htcsettingwidgets.apk.p"));
    set_progress(0.520459);
    apply_patch("/system/app/htcsettingwidgets.odex", "-",
                31f3a1d611804e3d80625cb671215ae2dcaef9da, 85384,
                6ba5f1ee5cc904450219becbcc6744a7dd6e9aae, package_extract_file("patch/system/app/htcsettingwidgets.odex.p"));
    set_progress(0.520966);
    apply_patch("/system/app/install_flash_player.apk", "-",
                b2279fb1313b7ad165e4058392c42fcb3d0c723c, 4412008,
                af546ae29917071e5a38e4392636b9aca2cfdaf5, package_extract_file("patch/system/app/install_flash_player.apk.p"));
    set_progress(0.547163);
    apply_patch("/system/app/install_flash_player.odex", "-",
                47a4d1d2eeb597d28ebf65e5825c76e57452859b, 54632,
                c530317c7743118bfa07bd8e3282fe9c90006110, package_extract_file("patch/system/app/install_flash_player.odex.p"));
    set_progress(0.547487);
    apply_patch("/system/app/restartapp.odex", "-",
                4cad3f7c71cd21415caab6a9a347026b8814056e, 10552,
                638185b543d7b3861d3cda2c5a4edf16c65586ba, package_extract_file("patch/system/app/restartapp.odex.p"));
    set_progress(0.547550);
    apply_patch("/system/app/teeter.odex", "-",
                7e92a08131b5c94dbabe5f0aeb79e85762fc8dbc, 94792,
                86688d00784d5e7cdd73fcda2f30ae25a67dcc98, package_extract_file("patch/system/app/teeter.odex.p"));
    set_progress(0.548112);
    apply_patch("/system/bin/btld", "-",
                f1af8711b015f979977de89572b0169821f3aaa8, 2004157,
                2ae86a34516fa7822d17d6f37a2f78c83cc0de49, package_extract_file("patch/system/bin/btld.p"));
    set_progress(0.560012);
    apply_patch("/system/bin/debuggerd", "-",
                bb89e814a367f2e2ac747ffa17050a8185f364b9, 22164,
                8bb2be67b1b65e7b98aaeb4ff638e2b0b94c6ed2, package_extract_file("patch/system/bin/debuggerd.p"));
    set_progress(0.560144);
    apply_patch("/system/bin/iptables", "-",
                709a8a388b7748ab0a827c8859cc4c9516805c44, 109204,
                3201724da41c8a336ae98e9773ec1b8bf0ea5412, package_extract_file("patch/system/bin/iptables.p"));
    set_progress(0.560792);
    apply_patch("/system/bin/netd", "-",
                245c11be4e81c0713c8b7cfbd7afc6501e47130f, 43408,
                4c824c2ae7d04fce8c425c58e82851d605a47bae, package_extract_file("patch/system/bin/netd.p"));
    set_progress(0.561050);
    apply_patch("/system/build.prop", "-",
                8050cbd1fc8cd5fa9c10bc1c648b849656018896, 6807,
                3ddb3d47afc370231c24adc91a44757a19af48eb, package_extract_file("patch/system/build.prop.p"));
    set_progress(0.561090);
    apply_patch("/system/customize/MNS/20201.xml", "-",
                73c7a2388811e77bdb8640ef3d01e7193ec7047d, 86782,
                6699d2c162acefbf08b33e5d52a904d91ada7b68, package_extract_file("patch/system/customize/MNS/20201.xml.p"));
    set_progress(0.561606);
    apply_patch("/system/customize/MNS/20205.xml", "-",
                73c7a2388811e77bdb8640ef3d01e7193ec7047d, 86782,
                6699d2c162acefbf08b33e5d52a904d91ada7b68, package_extract_file("patch/system/customize/MNS/20205.xml.p"));
    set_progress(0.562121);
    apply_patch("/system/customize/MNS/20210.xml", "-",
                73c7a2388811e77bdb8640ef3d01e7193ec7047d, 86782,
                6699d2c162acefbf08b33e5d52a904d91ada7b68, package_extract_file("patch/system/customize/MNS/20210.xml.p"));
    set_progress(0.562636);
    apply_patch("/system/customize/MNS/20404.xml", "-",
                872d0a6d864f0b8b6f7f2aad5830d9ab93c502e7, 85292,
                26c54fd17e6f68097fbcfcd8222605e282f3294f, package_extract_file("patch/system/customize/MNS/20404.xml.p"));
    set_progress(0.563143);
    apply_patch("/system/customize/MNS/20601.xml", "-",
                4b71939723acd8dc649786ee84eb8313bfe0d3dd, 85190,
                f0db7e07b8c80e105c8b12229c9404bcdcce372c, package_extract_file("patch/system/customize/MNS/20601.xml.p"));
    set_progress(0.563648);
    apply_patch("/system/customize/MNS/20810.xml", "-",
                3e5147a66e927a1c3ef0bb8a7eda7ff0ff3a38ee, 86573,
                8f8689c968faf935ce4402d209d3c1fa5552c50a, package_extract_file("patch/system/customize/MNS/20810.xml.p"));
    set_progress(0.564163);
    apply_patch("/system/customize/MNS/21401.xml", "-",
                e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
                f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21401.xml.p"));
    set_progress(0.564676);
    apply_patch("/system/customize/MNS/21403.xml", "-",
                e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
                f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21403.xml.p"));
    set_progress(0.565190);
    apply_patch("/system/customize/MNS/21404.xml", "-",
                e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
                f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21404.xml.p"));
    set_progress(0.565703);
    apply_patch("/system/customize/MNS/21406.xml", "-",
                e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
                f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21406.xml.p"));
    set_progress(0.566217);
    apply_patch("/system/customize/MNS/21407.xml", "-",
                e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
                f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21407.xml.p"));
    set_progress(0.566731);
    apply_patch("/system/customize/MNS/21416.xml", "-",
                e0bcd9a9c37e9eeca912ec3b8b4066a4171a723f, 86507,
                f00c7fdfd601097a1db5e44b7070748ca7ee12d2, package_extract_file("patch/system/customize/MNS/21416.xml.p"));
    set_progress(0.567244);
    apply_patch("/system/customize/MNS/22201.xml", "-",
                48b56b6447ef0d0bd5d3feb8f33ffc9a8064dacc, 86057,
                29a5ab502a5f554d9bc41f293c7956b9324145c1, package_extract_file("patch/system/customize/MNS/22201.xml.p"));
    set_progress(0.567755);
    apply_patch("/system/customize/MNS/23210.xml", "-",
                dae0bd8ccc75b38e6bff635c971304cf98e07f92, 87211,
                374634a8c3f22ff1b6384af918a14b2668cb7fc3, package_extract_file("patch/system/customize/MNS/23210.xml.p"));
    set_progress(0.568273);
    apply_patch("/system/customize/MNS/234.xml", "-",
                4b9548a6f1ee6930141dcda127c76226550619ac, 85499,
                88ab55184efe3516d2cc756b135ac2e1f5ebe232, package_extract_file("patch/system/customize/MNS/234.xml.p"));
    set_progress(0.568781);
    apply_patch("/system/customize/MNS/23802.xml", "-",
                ad54d14dc7d046ab4d42ff55e23b5e770b56acaa, 86369,
                635ee23fcd0c6434090fc820c29851e16055db96, package_extract_file("patch/system/customize/MNS/23802.xml.p"));
    set_progress(0.569294);
    apply_patch("/system/customize/MNS/23806.xml", "-",
                407d609b75ee38e2489956d318500b8fe05ae40b, 85497,
                7e96d8d6137093fbbe8a88b3409486f661b17100, package_extract_file("patch/system/customize/MNS/23806.xml.p"));
    set_progress(0.569801);
    apply_patch("/system/customize/MNS/24001.xml", "-",
                5b13ed55aacc73282ae051b0ef907d38d5768706, 86605,
                cb0c23154cb37ee14a4e072e8fff7bf64a98e326, package_extract_file("patch/system/customize/MNS/24001.xml.p"));
    set_progress(0.570315);
    apply_patch("/system/customize/MNS/24002.xml", "-",
                e987892a5fa4b87644d375b42325f553feace4d5, 85502,
                7b33ff79e4915fdda3187381224af576a8a31667, package_extract_file("patch/system/customize/MNS/24002.xml.p"));
    set_progress(0.570823);
    apply_patch("/system/customize/MNS/24008.xml", "-",
                dddbdbd1d6072ed9fc3884928fe262f29e5c6c3d, 85844,
                74db81b2b9bd7c7de03b5d0c54bf0e47028f7aa5, package_extract_file("patch/system/customize/MNS/24008.xml.p"));
    set_progress(0.571333);
    apply_patch("/system/customize/MNS/24201.xml", "-",
                0a21ec75f11dcd4528e2bb10bddbf56fe328cc2b, 87070,
                41084ac6b90672e8e582b07797d457756057091c, package_extract_file("patch/system/customize/MNS/24201.xml.p"));
    set_progress(0.571850);
    apply_patch("/system/customize/MNS/24801.xml", "-",
                688a7c668c53d6a935de5dcf2da3e1a3965b43c1, 87276,
                981890ddf50c4b61bcef1626178a25322bd97d73, package_extract_file("patch/system/customize/MNS/24801.xml.p"));
    set_progress(0.572368);
    apply_patch("/system/customize/MNS/250.xml", "-",
                2f79e202a609c800d4a7caf9f6339dd3ba024880, 88887,
                4f4e30fff13e21c1352cb615627742fa14b7f2e6, package_extract_file("patch/system/customize/MNS/250.xml.p"));
    set_progress(0.572896);
    apply_patch("/system/customize/MNS/255.xml", "-",
                8481d3541a1c85e3e50fa224857c48467ae464d2, 63392,
                ef0f71de63c4a842e89de2f82667fc28ff089e69, package_extract_file("patch/system/customize/MNS/255.xml.p"));
    set_progress(0.573272);
    apply_patch("/system/customize/MNS/262.xml", "-",
                073d7731051f3515e52e6009811adf8bb333f513, 85545,
                b3386dbc6b96eb2d2c8220319423d0ac1c6a68df, package_extract_file("patch/system/customize/MNS/262.xml.p"));
    set_progress(0.573780);
    apply_patch("/system/customize/MNS/26801.xml", "-",
                23ae3df03641cf16b498a159de1fdf159fb23b80, 85653,
                647eb1a79dfb872ff3b58c5fed4b900cd371b36a, package_extract_file("patch/system/customize/MNS/26801.xml.p"));
    set_progress(0.574289);
    apply_patch("/system/customize/MNS/26806.xml", "-",
                23ae3df03641cf16b498a159de1fdf159fb23b80, 85653,
                647eb1a79dfb872ff3b58c5fed4b900cd371b36a, package_extract_file("patch/system/customize/MNS/26806.xml.p"));
    set_progress(0.574797);
    apply_patch("/system/customize/MNS/425.xml", "-",
                d9522c94d04212af16bd7b22c14d0780bf750620, 85316,
                c59728ff5be3e7bfe7aa9875e5c0bacdeff95e46, package_extract_file("patch/system/customize/MNS/425.xml.p"));
    set_progress(0.575304);
    apply_patch("/system/customize/MNS/65501.xml", "-",
                f371398966cd4cd74069ccfc6812172e2c0e6a74, 94556,
                102472d2d4d3224af35540b560e4d9bfc95afd15, package_extract_file("patch/system/customize/MNS/65501.xml.p"));
    set_progress(0.575865);
    apply_patch("/system/customize/MNS/65507.xml", "-",
                249b7283093c8ccc7bfe53dea52e91f72560be87, 86601,
                7e396d9723de3691a8208d2b02aad183b9d3c6e7, package_extract_file("patch/system/customize/MNS/65507.xml.p"));
    set_progress(0.576379);
    apply_patch("/system/customize/MNS/65510.xml", "-",
                f0fec5ed3cd97da31fd961090156e5eedbb805aa, 86976,
                8e9d1f6eb2463f346cba04beb75a594631ac277b, package_extract_file("patch/system/customize/MNS/65510.xml.p"));
    set_progress(0.576896);
    apply_patch("/system/customize/MNS/default.xml", "-",
                342e0053f259e701d3c91af7316ad6c30a01e588, 85764,
                2b1dbdc132d3004d745ec2e3c5af2212928a49d6, package_extract_file("patch/system/customize/MNS/default.xml.p"));
    set_progress(0.577405);
    apply_patch("/system/customize/resource/CCInfo.txt", "-",
                ade19ff8a2fc85552428fc1912b391ea66102ec0, 2815,
                3e157b224e141c04c53ba2e63bb0e84e88be3e09, package_extract_file("patch/system/customize/resource/CCInfo.txt.p"));
    set_progress(0.577422);
    apply_patch("/system/etc/NOTICE.html.gz", "-",
                37f4fa2e947ce0d122ff85faf66fb112710c0a82, 61245,
                dd7c032924d8a74b8bbf3e40374a1f918e8cbd88, package_extract_file("patch/system/etc/NOTICE.html.gz.p"));
    set_progress(0.577785);
    apply_patch("/system/etc/firmware/default_nel.acdb", "-",
                0dbb9caba244cf7752ceac37e1e52e9130d6aded, 129346,
                55924df2b28f66ae990f38e180d77317f9ddcc95, package_extract_file("patch/system/etc/firmware/default_nel.acdb.p"));
    set_progress(0.578553);
    apply_patch("/system/etc/security/cacerts.bks", "-",
                de85a33da3e0f6b4ef74a7bd7c38a9d8dccdb68c, 63410,
                4a020cdf4c03185b07f973721fa63b672bc5c339, package_extract_file("patch/system/etc/security/cacerts.bks.p"));
    set_progress(0.578930);
    apply_patch("/system/etc/security/otacerts.zip", "-",
                5a527c8698a9460c52d58da210450285469cef07, 1144,
                a9d8f05c4eda08c591a3c9c0720c961ec873cab3, package_extract_file("patch/system/etc/security/otacerts.zip.p"));
    set_progress(0.578937);
    apply_patch("/system/fonts/ARDJ-KK.ttf", "-",
                2f4c25798a447bd9b2c7080c3aa566ffc7b41ec5, 12912,
                96f883d95fc56ba4d7508573bc4c0e68f0396ce2, package_extract_file("patch/system/fonts/ARDJ-KK.ttf.p"));
    set_progress(0.579013);
    apply_patch("/system/framework/am.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/am.jar.p"));
    set_progress(0.579015);
    apply_patch("/system/framework/am.odex", "-",
                25e9f9895d9e4f95bdf0af508f2aee394c6c0784, 19752,
                1dabac0e39b5f0f3b89f70153523df0ce8b97ef9, package_extract_file("patch/system/framework/am.odex.p"));
    set_progress(0.579133);
    apply_patch("/system/framework/android.policy.jar", "-",
                a234ba69c72928749ca2939fe03ad03a51010266, 345,
                a1a273e2cf425a35cc9310a5c7338df3aab1f0a9, package_extract_file("patch/system/framework/android.policy.jar.p"));
    set_progress(0.579135);
    apply_patch("/system/framework/android.policy.odex", "-",
                10d5097af0f9052f72d12e74cac9fe2076567ed7, 240456,
                cfba9a07813dcca86f53f83fb98573aaaae3432e, package_extract_file("patch/system/framework/android.policy.odex.p"));
    set_progress(0.580563);
    apply_patch("/system/framework/android.test.runner.jar", "-",
                1348094bc9f4e329018b2477bc95497a3ec727a2, 345,
                13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/android.test.runner.jar.p"));
    set_progress(0.580565);
    apply_patch("/system/framework/android.test.runner.odex", "-",
                9fb0000143205b5e39ae880d6a3a449c4c0d4b47, 193216,
                f4f5fb2915c1dbbd8af66334fcd05b122ab774a6, package_extract_file("patch/system/framework/android.test.runner.odex.p"));
    set_progress(0.581712);
    apply_patch("/system/framework/bmgr.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/bmgr.jar.p"));
    set_progress(0.581714);
    apply_patch("/system/framework/bmgr.odex", "-",
                dc20083e1b1c4795e3e6ee8eeda5c44afff1ac89, 14280,
                f4b2f8c6db953c9ff9d2b60476274bf5649636f9, package_extract_file("patch/system/framework/bmgr.odex.p"));
    set_progress(0.581799);
    apply_patch("/system/framework/com.google.android.maps.odex", "-",
                d6222fa4865fdf9f614fa2147c8a85898b4f9053, 674184,
                f2094239261872286d3346f1792193e7f174cca9, package_extract_file("patch/system/framework/com.google.android.maps.odex.p"));
    set_progress(0.585802);
    apply_patch("/system/framework/com.google.translate.jar", "-",
                3844f9894e59ae0f98c794393abda93181f0c105, 345,
                1d147f0148be0bfaa6901a8fd080f4fce9019c2e, package_extract_file("patch/system/framework/com.google.translate.jar.p"));
    set_progress(0.585804);
    apply_patch("/system/framework/com.google.translate.odex", "-",
                eb985b1b6ae85c083f63215cb4e087d8a9ea1db8, 41912,
                4679a3e886032ef7df16ede3c5447740190597af, package_extract_file("patch/system/framework/com.google.translate.odex.p"));
    set_progress(0.586053);
    apply_patch("/system/framework/com.htc.android.easopen.jar", "-",
                3844f9894e59ae0f98c794393abda93181f0c105, 345,
                1d147f0148be0bfaa6901a8fd080f4fce9019c2e, package_extract_file("patch/system/framework/com.htc.android.easopen.jar.p"));
    set_progress(0.586055);
    apply_patch("/system/framework/com.htc.android.easopen.odex", "-",
                64a02e13e3d506d234268021a7962cbc4e2e2728, 26920,
                aa9200c23aa8bade5cf2c381a66dfd3921ef935b, package_extract_file("patch/system/framework/com.htc.android.easopen.odex.p"));
    set_progress(0.586214);
    apply_patch("/system/framework/com.htc.android.pimlib.jar", "-",
                1348094bc9f4e329018b2477bc95497a3ec727a2, 345,
                13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/com.htc.android.pimlib.jar.p"));
    set_progress(0.586216);
    apply_patch("/system/framework/com.htc.android.pimlib.odex", "-",
                c2ff1a161f56897f3ffd95a2981f9dbb4674ce34, 89928,
                69a6807ea0d4419afdf38290bf990663793fff9f, package_extract_file("patch/system/framework/com.htc.android.pimlib.odex.p"));
    set_progress(0.586750);
    apply_patch("/system/framework/com.htc.framework.jar", "-",
                fc180adeda42bed9113cc99c4a57238be8c4cf72, 345,
                8f5f13f9fa9b97e054bec11b6742d32099d544e8, package_extract_file("patch/system/framework/com.htc.framework.jar.p"));
    set_progress(0.586752);
    apply_patch("/system/framework/com.htc.framework.odex", "-",
                f7087d2354ec132e192211d800d057199f5da165, 2227304,
                f94c58056ba80717ffbcbb6e5cbf2a0523438342, package_extract_file("patch/system/framework/com.htc.framework.odex.p"));
    set_progress(0.599977);
    apply_patch("/system/framework/com.htc.resources.apk", "-",
                1cc2d866e8c79cdb500c538470611fd070a472d7, 18067919,
                28642cea2556313405190437ca598a6fef25f4ca, package_extract_file("patch/system/framework/com.htc.resources.apk.p"));
    set_progress(0.707256);
    apply_patch("/system/framework/com.htc.rss.jar", "-",
                fc180adeda42bed9113cc99c4a57238be8c4cf72, 345,
                1d147f0148be0bfaa6901a8fd080f4fce9019c2e, package_extract_file("patch/system/framework/com.htc.rss.jar.p"));
    set_progress(0.707258);
    apply_patch("/system/framework/com.htc.rss.odex", "-",
                e49ea7a3dee363b41a96337a3eb1c264bbc20b47, 1145136,
                83363436303dba8414252216e6556e6bf129e9cd, package_extract_file("patch/system/framework/com.htc.rss.odex.p"));
    set_progress(0.714058);
    apply_patch("/system/framework/com.scalado.util.ScaladoUtil.jar",
                "-", 3844f9894e59ae0f98c794393abda93181f0c105, 345,
                13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/com.scalado.util.ScaladoUtil.jar.p"));
    set_progress(0.714060);
    apply_patch("/system/framework/com.scalado.util.ScaladoUtil.odex",
                "-", ec4a40eab026ed32ed8a1afbc35da6e2304ec426, 6872,
                d51dc94047ab31e28e256d058c547a111b10135e, package_extract_file("patch/system/framework/com.scalado.util.ScaladoUtil.odex.p"));
    set_progress(0.714101);
    apply_patch("/system/framework/core.jar", "-",
                e3e39b0c825aef80aff3b492e49f4e9e98c07142, 60844,
                c19791e4dfb9c5341a3b4bfd88286ee18fbadcdb, package_extract_file("patch/system/framework/core.jar.p"));
    set_progress(0.714462);
    apply_patch("/system/framework/core.odex", "-",
                1090f925afe42363fa09ac0884e2c444e5910bf3, 5572192,
                289fd966b31f28c14f6dfd7ba2b3484336ec6518, package_extract_file("patch/system/framework/core.odex.p"));
    set_progress(0.747547);
    apply_patch("/system/framework/ext.jar", "-",
                79f2530caf6b7ff0f3a45fb1e4ce16150747287d, 345,
                5a232d75131b3d0d03862247817e4a345ae09d8c, package_extract_file("patch/system/framework/ext.jar.p"));
    set_progress(0.747549);
    apply_patch("/system/framework/ext.odex", "-",
                0f15113125d818e5305d4c69aa25e477341f7c1c, 627464,
                5db6cbf1a3202c6aefce15aa0ad6e78aa2719e98, package_extract_file("patch/system/framework/ext.odex.p"));
    set_progress(0.751275);
    apply_patch("/system/framework/framework-res.apk", "-",
                af23bc76e4307148c93f5ce416f847cefebec9a6, 4995632,
                5e3a6dc95d25a6a5e45bbe0f3d598bfad140c22c, package_extract_file("patch/system/framework/framework-res.apk.p"));
    set_progress(0.780936);
    apply_patch("/system/framework/framework-tests.jar", "-",
                8624c27296d5779589f1d39510c49c7befc5e2c1, 345,
                8ecff138e68447d747ccd51dbc20efde8d275143, package_extract_file("patch/system/framework/framework-tests.jar.p"));
    set_progress(0.780938);
    apply_patch("/system/framework/framework-tests.odex", "-",
                dd41fbf59b6d1207d8730a7737ec4453c85c2dbe, 21472,
                2bcd4496eefc313b6d5e25b7eab8efc243e4ed8c, package_extract_file("patch/system/framework/framework-tests.odex.p"));
    set_progress(0.781066);
    apply_patch("/system/framework/framework.jar", "-",
                ea72f7f0184bd70770752571d7d20ad3ccf85c2f, 9517,
                c312ad2c687ff51bca7110ee7d138eb84b28a664, package_extract_file("patch/system/framework/framework.jar.p"));
    set_progress(0.781122);
    apply_patch("/system/framework/framework.odex", "-",
                a7aba407032523df6af2d181c804b0059244cfc3, 9462416,
                d4f0131d181ef5164d0ec0b7811930cb6d9a5952, package_extract_file("patch/system/framework/framework.odex.p"));
    set_progress(0.837306);
    apply_patch("/system/framework/ime.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/ime.jar.p"));
    set_progress(0.837308);
    apply_patch("/system/framework/ime.odex", "-",
                d57124329d5d09a76a9df8cd389e35435ef9a0b8, 6768,
                a7e5d307c50c7d36c3d6eaea9c0fc73c5d4fc0b9, package_extract_file("patch/system/framework/ime.odex.p"));
    set_progress(0.837348);
    apply_patch("/system/framework/input.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/input.jar.p"));
    set_progress(0.837350);
    apply_patch("/system/framework/input.odex", "-",
                74d17813c6a64ead1db86e400d3d12ed446404e9, 4456,
                9fd13251916a8cfc571408d422d17312c270b597, package_extract_file("patch/system/framework/input.odex.p"));
    set_progress(0.837377);
    apply_patch("/system/framework/javax.obex.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                13992b5e60f88b9722ca018c0969a2346c0463f6, package_extract_file("patch/system/framework/javax.obex.jar.p"));
    set_progress(0.837379);
    apply_patch("/system/framework/javax.obex.odex", "-",
                636b2cbd3698f153aee31cddb6317b042b0ab4e4, 60648,
                aaba78b444eb87ced7888b14d69d77514be06150, package_extract_file("patch/system/framework/javax.obex.odex.p"));
    set_progress(0.837739);
    apply_patch("/system/framework/monkey.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/monkey.jar.p"));
    set_progress(0.837741);
    apply_patch("/system/framework/monkey.odex", "-",
                82238d311f03b772513f372e1c726d532e06a0d2, 77520,
                0db10ef5a3772b220fac0a882abb313666b69fdd, package_extract_file("patch/system/framework/monkey.odex.p"));
    set_progress(0.838201);
    apply_patch("/system/framework/pm.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/pm.jar.p"));
    set_progress(0.838203);
    apply_patch("/system/framework/pm.odex", "-",
                17be5e7477b5f1d036927c5840f2a5dfbcddf17a, 24896,
                d9ccfb158a5b70ce26cfedf95fad6efc131e1e6e, package_extract_file("patch/system/framework/pm.odex.p"));
    set_progress(0.838351);
    apply_patch("/system/framework/services.jar", "-",
                202cb7a3bdad44d32145375591208808a47562ee, 345,
                3d7ab3a9ffbf097f4d0ed1ae63c356e91590ffee, package_extract_file("patch/system/framework/services.jar.p"));
    set_progress(0.838353);
    apply_patch("/system/framework/services.odex", "-",
                d1d1c2411289d0d66c6121b80428b490c28cdcdb, 1677032,
                0c03debcf7460cd37f98316dc6bae6677208d472, package_extract_file("patch/system/framework/services.odex.p"));
    set_progress(0.848311);
    apply_patch("/system/framework/svc.jar", "-",
                7d1c68fb68d25add423e3df7aa1f8ade8e7905f7, 345,
                c70833662c7fab8c821836e45ad5dda40cbb1f82, package_extract_file("patch/system/framework/svc.jar.p"));
    set_progress(0.848313);
    apply_patch("/system/framework/svc.odex", "-",
                1c6b0c7a8cba52dc0384dd47994d2beaeee07a69, 11544,
                c35e8ad7317c197e89ee2f8127c6aae114f1fde6, package_extract_file("patch/system/framework/svc.odex.p"));
    set_progress(0.848381);
    apply_patch("/system/lib/bluez-plugin/audio.so", "-",
                d1134c53947f13a4198d0c43dd92dc15a8c7176b, 114640,
                c0efc09675b2aa9ee4f7be88b74d489e175c3f2b, package_extract_file("patch/system/lib/bluez-plugin/audio.so.p"));
    set_progress(0.849062);
    apply_patch("/system/lib/egl/libGLES_android.so", "-",
                2549a57077dffeaba0f9fced3ecb0a716f40f0ae, 109952,
                ac4a61eee79806c3514f2bea55241ae3ea29a377, package_extract_file("patch/system/lib/egl/libGLES_android.so.p"));
    set_progress(0.849715);
    apply_patch("/system/lib/libandroid_runtime.so", "-",
                6aa9329804c3d519cf4cc6abd6b6b77dfd0cbeb0, 641144,
                92c719df4caf0db5129f8d37ce2b68eea410e7fc, package_extract_file("patch/system/lib/libandroid_runtime.so.p"));
    set_progress(0.853522);
    apply_patch("/system/lib/libaudio.so", "-",
                d014c26f3b6456594ab261d08e91fd735cd021ee, 64576,
                d276f25cde5377950c556a093768c0887f434d5b, package_extract_file("patch/system/lib/libaudio.so.p"));
    set_progress(0.853905);
    apply_patch("/system/lib/libaudiopolicy.so", "-",
                0689c5dd433e466bc5766ea88f85e5daa7112d2c, 34848,
                3fc5b5d8460ebd4a9a9ab1f28d959af04df98781, package_extract_file("patch/system/lib/libaudiopolicy.so.p"));
    set_progress(0.854112);
    apply_patch("/system/lib/libbluedroid.so", "-",
                f90b7f2028e9a4507c29550497b7ae7f50e12502, 13564,
                d03ff395c50fb766ab8954eba78b6f5c644ab44c, package_extract_file("patch/system/lib/libbluedroid.so.p"));
    set_progress(0.854192);
    apply_patch("/system/lib/libbluetoothd.so", "-",
                7dfebf000820734b54052b3843bc49528c731565, 529500,
                db1d788ee8ece60662aebb42b4b428555b4c6139, package_extract_file("patch/system/lib/libbluetoothd.so.p"));
    set_progress(0.857336);
    apply_patch("/system/lib/libcpt9.so", "-",
                cf6844c599ced936518be21b7cc652efbbfb1826, 350460,
                be9b7e41333e66d8c583387c4345798df0967c60, package_extract_file("patch/system/lib/libcpt9.so.p"));
    set_progress(0.859417);
    apply_patch("/system/lib/libdrm1.so", "-",
                e0ffee1d5b5af68123fc0b01b63f2d48a37e7d8a, 42352,
                0aacf541d3f19fd6e0402b11422f92f0ced697c9, package_extract_file("patch/system/lib/libdrm1.so.p"));
    set_progress(0.859669);
    apply_patch("/system/lib/libdrm1_jni.so", "-",
                20b09381844d1897461135fa4b8c649934dcecf4, 13736,
                8123a99aa23d7fd60a9c8c22b1c4aa6c83eac266, package_extract_file("patch/system/lib/libdrm1_jni.so.p"));
    set_progress(0.859750);
    apply_patch("/system/lib/libdvm.so", "-",
                2eb34acc63cbbbfe0abf7112c5ef8ab3f8b916ff, 687640,
                05d7dc72dc0dcf73a188c78676e08a791919531c, package_extract_file("patch/system/lib/libdvm.so.p"));
    set_progress(0.863833);
    apply_patch("/system/lib/libflashplayer.so", "-",
                f30dc1e82cad6e53110361b3ce0a26463c3e32c3, 7659464,
                4ea0538ec762b681a11734fbd0ca8e03bc380d1d, package_extract_file("patch/system/lib/libflashplayer.so.p"));
    set_progress(0.909312);
    apply_patch("/system/lib/libgps.so", "-",
                940cb7e7abfd0c847c50c10c8cb8da42e29a5fec, 100752,
                75e2c12b803783503224a9d60462cef61e650ab1, package_extract_file("patch/system/lib/libgps.so.p"));
    set_progress(0.909910);
    apply_patch("/system/lib/libhtc_ril.so", "-",
                2a4b3084de08d8cb2d537d7bca32c9cf32828191, 534244,
                6f8418ec83ecfa3da47561eede2fdef1bccef53b, package_extract_file("patch/system/lib/libhtc_ril.so.p"));
    set_progress(0.913082);
    apply_patch("/system/lib/libicudata.so", "-",
                1a4899f358c6d70f02917889f5ae7ce8abb45123, 5345876,
                a783dd94116f6ff094521daff35204704faec154, package_extract_file("patch/system/lib/libicudata.so.p"));
    set_progress(0.944823);
    apply_patch("/system/lib/libmedia.so", "-",
                d0228b39d7f23f53eeaabdaf60dc5484f983a85d, 392932,
                3cc0c4770d9b7895a0543dbb7632e67b11a6a55d, package_extract_file("patch/system/lib/libmedia.so.p"));
    set_progress(0.947156);
    apply_patch("/system/lib/libskia.so", "-",
                9e992fbf190cdc2b2e582af65bd19d0f8baffa20, 1117924,
                a2a54c0dfda3bcefff9a89527a5420c136e7ec72, package_extract_file("patch/system/lib/libskia.so.p"));
    set_progress(0.953794);
    apply_patch("/system/lib/libstagefright.so", "-",
                dbaaa6861acc2d77e1480f8ed050a1985abbfef5, 717544,
                de4541245109b996bfb68662ed73febdde8763a2, package_extract_file("patch/system/lib/libstagefright.so.p"));
    set_progress(0.958054);
    apply_patch("/system/lib/libsurfaceflinger.so", "-",
                eaa898a6fb34d10ef19ebe073b1af6b4b517d66c, 170816,
                7ae6bd32d9557a85955f6221375683720369b7bd, package_extract_file("patch/system/lib/libsurfaceflinger.so.p"));
    set_progress(0.959069);
    apply_patch("/system/lib/libsurfaceflinger_client.so", "-",
                c1e1a17c8b32cef6c4cf712f6b8ce62de0050f18, 97144,
                5f5892b33f9dd7123f82c25e94c468d1556013c5, package_extract_file("patch/system/lib/libsurfaceflinger_client.so.p"));
    set_progress(0.959646);
    apply_patch("/system/lib/libui.so", "-",
                122329c939c77c4ac78f8bf4b41804931d1a9d6d, 84488,
                6c522eafb28d5d16d9012bedede3d42ae0e77f39, package_extract_file("patch/system/lib/libui.so.p"));
    set_progress(0.960147);
    apply_patch("/system/lib/libvoAndroid.so", "-",
                0e970b2685cd2efd2991337981e5b2cc86a92d71, 155664,
                c642cec91e75874db1e7217570a392f1256f664b, package_extract_file("patch/system/lib/libvoAndroid.so.p"));
    set_progress(0.961071);
    apply_patch("/system/lib/libvoH264Dec.so", "-",
                f9454fd8b0350aa3d9a642946c589fde3bfc5df4, 153644,
                660dd4a41c4ceafae56a768533d4420b9cf95dcc, package_extract_file("patch/system/lib/libvoH264Dec.so.p"));
    set_progress(0.961984);
    apply_patch("/system/lib/libvoOMXME.so", "-",
                1f8256c48781cf652a075ea75436d817377c7368, 162968,
                72b6f95fe084ec9107891189982a194de83031d4, package_extract_file("patch/system/lib/libvoOMXME.so.p"));
    set_progress(0.962951);
    apply_patch("/system/lib/libvoOMXOne.so", "-",
                a2b56684186f74bc342f067b3e0bbf47f8f31955, 471392,
                c02f44c23d65a96066e2bf23c96c36df15d8af03, package_extract_file("patch/system/lib/libvoOMXOne.so.p"));
    set_progress(0.965750);
    apply_patch("/system/lib/libvoSrcRTSP.so", "-",
                e249ebe0f87514440f696b838a63f493804ccb08, 365652,
                fbb3b7e063db20f1492f4d0625c3fa216e916b85, package_extract_file("patch/system/lib/libvoSrcRTSP.so.p"));
    set_progress(0.967921);
    apply_patch("/system/lib/libwebcore.so", "-",
                215bff5ffd54b2558f6bde9961522551bfa18c63, 5126800,
                0bc1f8b76ec535b1b7c1e9f6137c27c7c6724abf, package_extract_file("patch/system/lib/libwebcore.so.p"));
    set_progress(0.998362);
    apply_patch("/system/lib/modules/bcm4329.ko", "-",
                c9f9b0034b35d5e0c93572316bf089587ef237e7, 270340,
                2852c553ed2ac6ae670e8e99e15ac6b2138b5a3a, package_extract_file("patch/system/lib/modules/bcm4329.ko.p"));
    set_progress(0.999967);
    apply_patch("/system/xbin/crasher", "-",
                6b6f4f9542ec5e457cd6c682aad9862bd12dde2a, 5540,
                146fe9677a6f5bf0b9f1b648ee9b261e0a94f579, package_extract_file("patch/system/xbin/crasher.p"));
    set_progress(1.000000);
    show_progress(0.100000, 10);
    ui_print("Unpacking new files...");
    package_extract_dir("system", "/system");
    package_extract_dir("data", "/data");
    ui_print("Symlinks and permissions...");
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm(0, 3003, 0755, "/system/bin/ip");
    set_perm(0, 3003, 0755, "/system/bin/ipd");
    set_perm(0, 3003, 02750, "/system/bin/netcfg");
    set_perm(0, 3004, 02755, "/system/bin/ping");
    set_perm(0, 2000, 06755, "/system/bin/reboot");
    set_perm(0, 2000, 06750, "/system/bin/run-as");
    set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    set_perm(0, 0, 0755, "/system/etc/bluetooth");
    set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
    set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    write_firmware_image("PACKAGE:firmware.zip", "zip");
    unmount("/data");
    unmount("/system");
    
     
    Zuletzt bearbeitet: 03.08.2012
    B.D.1: bedankt sich.
  5. Lopder, 03.08.2012 #5
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Hi

    Ja jetzt wird es schon konkreter :).

    Ich habe auch was gefunden in "/bootable/recovery/recovery.c"

    * OTA INSTALL
    * 1. main system downloads OTA package to /cache/some-filename.zip
    * 2. main system writes "--update_package=/cache/some-filename.zip"
    * 3. main system reboots into recovery
    * 4. get_args() writes BCB with "boot-recovery" and "--update_package=..."
    * -- after this, rebooting will attempt to reinstall the update --
    * 5. install_package() attempts to install the update
    * NOTE: the package install must itself be restartable from any point
    * 6. finish_recovery() erases BCB
    * -- after this, rebooting will (try to) restart the main system --
    * 7. ** if install failed **
    * 7a. prompt_and_wait() shows an error icon and waits for the user
    * 7b; the user reboots (pulling the battery, etc) into the main system
    * 8. main() calls maybe_install_firmware_update()
    * ** if the update contained radio/hboot firmware **:
    * 8a. m_i_f_u() writes BCB with "boot-recovery" and "--wipe_cache"
    * -- after this, rebooting will reformat cache & restart main system --
    * 8b. m_i_f_u() writes firmware image into raw cache partition
    * 8c. m_i_f_u() writes BCB with "update-radio/hboot" and "--wipe_cache"
    * -- after this, rebooting will attempt to reinstall firmware --
    * 8d. bootloader tries to flash firmware
    * 8e. bootloader writes BCB with "boot-recovery" (keeping "--wipe_cache")
    * -- after this, rebooting will reformat cache & restart main system --
    * 8f. erase_volume() reformats /cache
    * 8g. finish_recovery() erases BCB
    * -- after this, rebooting will (try to) restart the main system --
    * 9. main() calls reboot() to boot main system

    Damit bin ich erstmal zufrieden. Das Script ist auch gut. Die Frage die ich mir jetzt stelle "was" ist das "main system" ?
    Ein Service welches auf Linux-Eben läuft ? Von wem wird dieses Script gestartet ? und wie heißt es ?
    Also die eigentliche Frage kann eine App auch irgendwie was flashen ? Bzw sowas anstoßen ? Das geht doch nur auf Linux Ebene. Wo Apps keinen Zugriff haben ?


    Grüße
     
  6. Thyrion, 03.08.2012 #6
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,845
    Erhaltene Danke:
    2,450
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    "Main system" ist kein Service. Das ist das eigentliche System, welches startet, wenn du normal bootest.

    Das Script wird vom Recovery-System durch den Flashvorgang gestartet.
    Theoretisch kann auch eine App die Dateien der System-Partition ersetzen. Dazu braucht sie aber a) Root-Rechte und b) Schreibrechte auf der System-Partition. Beides ist normalerweise erstmal nicht gegeben.
     
  7. Otandis_Isunos, 03.08.2012 #7
    Otandis_Isunos

    Otandis_Isunos Ehrenmitglied

    Beiträge:
    12,679
    Erhaltene Danke:
    4,808
    Registriert seit:
    26.10.2010
    Phone:
    Motorola Moto X 2014
    Die Update-Scripte laufen nicht direkt unter Android, sondern das ist ein propitäres System ausserhalb des eigentlichen Systems.

    Deswegen wird das Gerät ja in den Bootloader bzw in die Recovery gebootet. Dort in dieser Sektion werden eben alle Updates ausgeführt, ausgenommen jetzt Firmware flashen mittels einer Software die auf dem eigenen Rechner läuft.

    Das Androidsystem ist zu diesem Zeitpunkt NICHT! geladen. Also ist es auch kein Service bzw Programm innerhalb Android, sondern ein Prozess in der Recovery respektive Bootloader oder was auch immer dafür bei den einzelnen Herstellern verantwortlich ist.

    Nachtrag:

    Wie drückt man das jetzt am besten noch aus -.- Ist es eben schwer zu beschreiben. Aber dieser Prozess im Recovery lädt dann einfach nur das Script und bindet die entsprechenden Systemlaufwerke ein (die ja so oder so verfügbar sind, egal ob das System nun gestartet ist oder nicht) und prüft dann eben.

    Natürlich lässt sich aus dem Updaterscript nicht schlüssig feststellen welcher Prozess dafür verantwortlich ist.
     
  8. Lopder, 03.08.2012 #8
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Hi

    Ja genau jetzt komm ich schön langsam dort hin was ich wissen will was ich noch nicht ganz verstehe .. :).
    Wenn es im Recovery "gebootet" ist läuft läuft dann bereits Linux ?
    Oder erstmal auch nicht ? Ein propitäres System ? Ja was denn genau ?
    Weil man kann ja im Recovery flashen, Filesystem mounten, löschen etc. Und das Recovery-System ist ja offensichtlich so mächtig scripte auszuführen. Was läuft denn dann ? weil offensichlich könne ja leute sowas wie ein ClockworkMod Recovery schreiben.
    Aber Linux kann nicht laufen weil sonst könnte ich ja nicht beim ein custom image flashen. Damit flashe ich ja gerade auch Linux :).

    Und wenn ich mir so das headerfile recovery.c ansehe: Sehe ich:

    #include <ctype.h>
    #include <errno.h>
    #include <fcntl.h>
    #include <getopt.h>
    #include <limits.h>
    #include <linux/input.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/stat.h>
    #include <sys/types.h>
    #include <time.h>
    #include <unistd.h>
    #include <dirent.h>

    Das ist ja schon ganz schön viel.

    Also hab ich auf meinem Handy ein Betriebsystem welches recovery.c ausführen kann.
    Und noch ein Betriebsystem auf dem Android läuft ?
    Und der Bootloader entscheidet welches geladen wird ? :blink:
     
  9. Thyrion, 03.08.2012 #9
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,845
    Erhaltene Danke:
    2,450
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Das Recovery ist ein zweites System auf dem Gerät und läuft unabhängig von dem "normalen" System. Und ja, das ist auch ein Linux-basiertes System.
     
  10. Hasan94, 06.08.2012 #10
    Hasan94

    Hasan94 Android-Hilfe.de Mitglied

    Beiträge:
    48
    Erhaltene Danke:
    1
    Registriert seit:
    02.04.2012
    Man flasht einfach den heruntergeladenen RUU und voilà.
     
  11. Thyrion, 06.08.2012 #11
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,845
    Erhaltene Danke:
    2,450
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    1. "RUU" ist ein HTC-Konstrukt. Andere Hersteller haben da eigene Lösungen.
    2. OTA-Updates sind in der Regel keine Komplettpakete und eigentlich von dem was hier beschrieben wird auch allgemein gültig.
     
    Hasan94 bedankt sich.
  12. Hasan94, 06.08.2012 #12
    Hasan94

    Hasan94 Android-Hilfe.de Mitglied

    Beiträge:
    48
    Erhaltene Danke:
    1
    Registriert seit:
    02.04.2012
    Achsoo, was Neues gelernt. ^^
     
  13. Lopder, 06.08.2012 #13
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Aha jetzt aber :D
    Ok daran hab ich gar nicht gedacht 2 Linux-basierte System.

    Der Grund warum ich das ganze hinterfrage ist, eigentlich das.
    Wenn ein Gerät Verschlüsselt ist. Dann geht kein OTA mehr. Warum ? Wird der Bereich wo die Apps liegen auch verschlüsselt ? D.h ich starte mit einem System will Apps installieren /updaten (das macht ja OTA auch) tja und jetzt das aber Verschlüsselt -> geht nicht. ?? Oder was genau wird den Verschlüsselt ?

    Noch ne Frage. Zu Root-Rechte. D.h wenn ich einer App Root-Rechte gebe kann die auch aus dem Android ausbrechen ? Und z.B ein Rootkit oder sonst was böses installieren/irgendwas manipulieren ? Ich dachte Android Apps sind nur Java Programme in ihrer VM.
    Andererseits kenne ich eine App die qausi ein Terminal ist, da kann ich ja richtige Linux Befehle absetzten. Also ist es wohl auch irgendwie möglich richtig "native" Programme zu schreiben und die dann auszuführen ?
     
  14. Otandis_Isunos, 06.08.2012 #14
    Otandis_Isunos

    Otandis_Isunos Ehrenmitglied

    Beiträge:
    12,679
    Erhaltene Danke:
    4,808
    Registriert seit:
    26.10.2010
    Phone:
    Motorola Moto X 2014
    Naja, du missverstehst das bisschen. Android hat mit einem reinen Linux fast nur noch den Kernel gemeinsam ;) Der Rest läuft völlig anders.

    Daher muss man hier ein wenig umdenken. Die Frage wegen den root-rechten beantworte ich jetzt nicht, denn die kannst du zu 100% selbst beantworten.

    Auch kannst du ein Androidgerät, zumindest das Grundsystem nicht einfach verschlüsseln. Das würde danach garnicht mehr booten können, weil es eben keinen Bootloader in dem Sinne gibt. Zumindest nicht so wie man es auf einem richtigen PC kennt. Denn wenn man Linux verschlüsselt, muss nämlich auch der Bootloader bzw die Parameter angepasst werden und das zum Teil manuell und das geht bei Android NICHT!

    Was geht ist: Du kannst die Firmware selbst signieren und im Bootloader eine Funktion einbauen, die eben einen Check durchführt, ob der Fingerprint auch echt ist, wenn nicht -> kein booten

    So macht das Motorola z.B. derzeit. Denn da ist der Bootloader signiert und lässt sich nicht knacken (okay es gibt zwar laut xda eine Lösung, aber das ist nur ein ByPass).

    Android-Apps sind NICHT nur reines Java. Es muss IMMER ein bisschen nativer Code dabei sein, denn sonst könnte die App garnicht starten.

    Das Terminal, was du meinst ist nur ein Zugang zu den Standardbefehlen von Android. Und nein, selbst hier gibt es Unterschiede. Es gibt noch nicht mal eine RICHTIGE Shell. Es ist einfach nur eine einfache sh, mehr nicht, mit Standardbefehlen kommt man nicht weit, hier muss man dann auf die Busybox greifen, die alles mitbringt.

    Am besten dann noch eine bash installieren, damit man vernüftig arbeiten kann. Direkt auf dem Telefon jedoch macht das keinen Spaß, dann doch lieber den Umweg über das Android SDK und dann mittels adb direkt auf das Telefon. Geht schneller und ist komfortabler.

    Wegen nativen Apps schreiben: Einfach so geht das natürlich nicht.Denn es läuft kein X.Org Server. Du kannst also nicht einfach irgendein Programm nehmen, dass crosscompilen und hoffen das es läuft.

    Das funktioniert bei reinen Terminalprogrammen, aber nicht bei solchen, die eine grafische Oberfläche haben, hier muss man selbst Hand anlegen und den Kram dann in Eclipse schreiben ;)
     
  15. Lopder, 07.08.2012 #15
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Hallo

    Äm reden wir von selben ? Ich stell mir das nicht so vor das gesammt Gerät verschlüsseln. Und Signierung in dem Zusammenhang versteh ich jetzt auch nicht.

    Es gibt bei Android 4.0 eine funktion Gerät Verschlüsseln.
    Telefon verschlüsseln - Android OS-Hilfe
    Ich frage mich, wenn das gemacht wurde ? Wieso geht dann kein OTA mehr ? Ich sehe eben keinen Grund, wenn nur "Google-Konten, App-Daten, Musik und andere Medien sowie heruntergeladene Informationen" Verschlüsselt werden?
    Daher was wird genau Verschlüsselt ? Daher dachte ich (wie im Post davor) das vielleicht ein Teil verschlüsselt wird wo beim updaten zugegriffen wird der aber im updatemodus nicht entschlüsselt ist. Oder warum sonst ?

    Und zum 2ten ...
    Naitve Apps brauchen ja keine "Oberfläche". Also ich denke jetzt nicht daran das ich irgend ein GUI Zeugs zu "crosscompilieren".
    Aber wenn ich über die Shell mein "Simple clac" welches 2 Zahlen addiert welches ich über die Konsole eingeben habe und mir dort das erbegnis ausdruckt. Ist das auch ein Programm.

    "Es muss IMMER ein bisschen nativer Code dabei sein, denn sonst könnte die App garnicht starten."
    Verstehe ich jetzt nicht ? Was muss denn dabei sein ? Was ist das bisschen nativer Code ?

    Gruß
     
  16. Otandis_Isunos, 07.08.2012 #16
    Otandis_Isunos

    Otandis_Isunos Ehrenmitglied

    Beiträge:
    12,679
    Erhaltene Danke:
    4,808
    Registriert seit:
    26.10.2010
    Phone:
    Motorola Moto X 2014
    Bei einem OTA werden meist Systemdateien aktualisiert und Systemanwendungen aktualisiert und ggfs ein neuer Kernel installiert. Da die Verschlüsselung aber nur die Userdaten betrifft, kann ein OTA durchgeführt werden.

    Sorry, wusste nämlich garnicht das man mittels ICS verschlüsseln kann lol :D Wieder was gelernt ;)
     
  17. Lopder, 08.08.2012 #17
    Lopder

    Lopder Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Ja eben und das geht eben dann NICHT mehr! :D
    Daher meine Frage warum ? Und daher will ich verstehen wie ein OTA funktioniert ? Weil es für mich keinen Grund dafür gibt ...
     

Diese Seite empfehlen