diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml
index a263c39a0a40..e41f5234a571 100644
--- a/android/abi_gki_aarch64.xml
+++ b/android/abi_gki_aarch64.xml
@@ -1427,6 +1427,7 @@
+
@@ -2145,6 +2146,8 @@
+
+
@@ -4394,7 +4397,7 @@
-
+
@@ -4408,7 +4411,7 @@
-
+
@@ -4513,7 +4516,7 @@
-
+
@@ -4564,7 +4567,7 @@
-
+
@@ -4818,7 +4821,7 @@
-
+
@@ -4967,7 +4970,7 @@
-
+
@@ -4990,14 +4993,14 @@
-
+
-
-
+
+
@@ -5037,258 +5040,247 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -5304,38 +5296,38 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
@@ -5685,10 +5677,10 @@
-
+
-
+
@@ -5701,12 +5693,12 @@
-
+
-
+
-
+
@@ -5719,10 +5711,10 @@
-
+
-
+
@@ -5855,7 +5847,7 @@
-
+
@@ -5977,7 +5969,7 @@
-
+
@@ -5986,7 +5978,7 @@
-
+
@@ -6011,21 +6003,21 @@
-
+
-
+
-
+
-
+
@@ -6071,7 +6063,7 @@
-
+
@@ -6143,7 +6135,7 @@
-
+
@@ -6164,7 +6156,7 @@
-
+
@@ -6176,7 +6168,7 @@
-
+
@@ -6781,8 +6773,8 @@
-
-
+
+
@@ -6794,13 +6786,13 @@
-
+
-
+
@@ -6811,8 +6803,8 @@
-
-
+
+
@@ -6859,10 +6851,10 @@
-
+
-
+
@@ -6871,7 +6863,7 @@
-
+
@@ -7105,13 +7097,13 @@
-
+
-
+
-
+
@@ -7231,8 +7223,8 @@
-
-
+
+
@@ -7240,21 +7232,21 @@
-
+
-
+
-
+
-
+
@@ -7360,7 +7352,7 @@
-
+
@@ -7377,7 +7369,7 @@
-
+
@@ -7388,7 +7380,7 @@
-
+
@@ -7402,13 +7394,13 @@
-
+
-
+
@@ -7598,7 +7590,7 @@
-
+
@@ -7640,14 +7632,14 @@
-
-
+
+
-
+
@@ -7765,28 +7757,28 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -7803,8 +7795,8 @@
-
-
+
+
@@ -8307,7 +8299,7 @@
-
+
@@ -8414,22 +8406,22 @@
-
+
-
+
-
+
-
+
@@ -8848,7 +8840,7 @@
-
+
@@ -8908,21 +8900,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -8942,7 +8934,7 @@
-
+
@@ -8950,7 +8942,7 @@
-
+
@@ -8962,7 +8954,7 @@
-
+
@@ -8990,7 +8982,7 @@
-
+
@@ -9250,7 +9242,7 @@
-
+
@@ -9267,7 +9259,7 @@
-
+
@@ -9279,7 +9271,7 @@
-
+
@@ -9306,10 +9298,10 @@
-
+
-
+
@@ -9318,12 +9310,12 @@
-
+
-
+
@@ -9331,7 +9323,7 @@
-
+
@@ -9343,7 +9335,7 @@
-
+
@@ -9362,7 +9354,7 @@
-
+
@@ -9379,7 +9371,7 @@
-
+
@@ -9640,8 +9632,8 @@
-
-
+
+
@@ -9670,8 +9662,8 @@
-
-
+
+
@@ -9806,10 +9798,10 @@
-
+
-
+
@@ -9818,10 +9810,10 @@
-
+
-
+
@@ -9837,28 +9829,28 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -9866,7 +9858,7 @@
-
+
@@ -9890,7 +9882,7 @@
-
+
@@ -9901,7 +9893,7 @@
-
+
@@ -9919,26 +9911,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -9949,7 +9941,7 @@
-
+
@@ -9957,7 +9949,7 @@
-
+
@@ -9965,7 +9957,7 @@
-
+
@@ -9976,8 +9968,8 @@
-
-
+
+
@@ -9999,7 +9991,7 @@
-
+
@@ -10021,7 +10013,7 @@
-
+
@@ -10082,7 +10074,7 @@
-
+
@@ -10153,7 +10145,7 @@
-
+
@@ -10799,8 +10791,8 @@
-
-
+
+
@@ -11109,7 +11101,7 @@
-
+
@@ -11180,7 +11172,7 @@
-
+
@@ -11205,37 +11197,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
@@ -11349,7 +11324,7 @@
-
+
@@ -11367,7 +11342,7 @@
-
+
@@ -11550,13 +11525,13 @@
-
+
-
+
@@ -11617,7 +11592,7 @@
-
+
@@ -11812,10 +11787,10 @@
-
+
-
+
@@ -12182,10 +12157,10 @@
-
+
-
+
@@ -12230,15 +12205,15 @@
-
+
-
+
-
+
-
+
@@ -12246,7 +12221,7 @@
-
+
@@ -14033,31 +14008,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -14071,7 +14046,7 @@
-
+
@@ -14085,7 +14060,7 @@
-
+
@@ -14099,7 +14074,7 @@
-
+
@@ -14107,7 +14082,7 @@
-
+
@@ -14115,7 +14090,7 @@
-
+
@@ -14123,7 +14098,7 @@
-
+
@@ -14134,7 +14109,7 @@
-
+
@@ -14142,7 +14117,7 @@
-
+
@@ -14150,23 +14125,23 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -14174,7 +14149,7 @@
-
+
@@ -14182,7 +14157,7 @@
-
+
@@ -14190,7 +14165,7 @@
-
+
@@ -14198,7 +14173,7 @@
-
+
@@ -14206,10 +14181,27 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -14217,17 +14209,17 @@
-
+
-
+
-
+
-
+
-
+
@@ -14237,21 +14229,21 @@
-
+
-
+
-
+
-
+
-
+
@@ -14260,12 +14252,12 @@
-
+
-
+
@@ -14281,7 +14273,7 @@
-
+
@@ -14294,7 +14286,7 @@
-
+
@@ -14305,7 +14297,7 @@
-
+
@@ -14313,7 +14305,7 @@
-
+
@@ -14323,37 +14315,48 @@
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
@@ -14361,23 +14364,23 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -14388,15 +14391,15 @@
-
+
-
+
-
+
@@ -14404,7 +14407,7 @@
-
+
@@ -14412,7 +14415,7 @@
-
+
@@ -14871,10 +14874,10 @@
-
+
-
+
@@ -15231,15 +15234,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -15322,14 +15317,6 @@
-
-
-
-
-
-
-
-
@@ -16034,7 +16021,7 @@
-
+
@@ -16042,7 +16029,7 @@
-
+
@@ -16247,21 +16234,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -16276,39 +16249,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -16403,7 +16343,7 @@
-
+
@@ -16505,7 +16445,7 @@
-
+
@@ -16581,7 +16521,7 @@
-
+
@@ -16611,7 +16551,7 @@
-
+
@@ -16784,14 +16724,6 @@
-
-
-
-
-
-
-
-
@@ -16966,7 +16898,7 @@
-
+
@@ -16974,7 +16906,7 @@
-
+
@@ -16982,23 +16914,15 @@
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -17008,8 +16932,8 @@
-
-
+
+
@@ -17368,7 +17292,7 @@
-
+
@@ -17653,7 +17577,7 @@
-
+
@@ -17739,7 +17663,7 @@
-
+
@@ -18050,39 +17974,39 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -18161,10 +18085,10 @@
-
+
-
+
@@ -18187,8 +18111,8 @@
-
-
+
+
@@ -18196,8 +18120,8 @@
-
-
+
+
@@ -18205,8 +18129,8 @@
-
-
+
+
@@ -18229,14 +18153,14 @@
-
-
+
+
-
-
+
+
@@ -18244,8 +18168,8 @@
-
-
+
+
@@ -18256,8 +18180,8 @@
-
-
+
+
@@ -18509,7 +18433,7 @@
-
+
@@ -18542,7 +18466,7 @@
-
+
@@ -18555,9 +18479,9 @@
-
+
-
+
@@ -18567,20 +18491,20 @@
-
+
-
+
-
+
-
+
@@ -18738,7 +18662,7 @@
-
+
@@ -18776,7 +18700,7 @@
-
+
@@ -18784,7 +18708,7 @@
-
+
@@ -18822,7 +18746,7 @@
-
+
@@ -18836,7 +18760,7 @@
-
+
@@ -18847,7 +18771,7 @@
-
+
@@ -18867,7 +18791,7 @@
-
+
@@ -18875,7 +18799,7 @@
-
+
@@ -18973,7 +18897,7 @@
-
+
@@ -19437,7 +19361,7 @@
-
+
@@ -19637,7 +19561,7 @@
-
+
@@ -19768,9 +19692,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -19778,7 +19719,7 @@
-
+
@@ -19786,7 +19727,7 @@
-
+
@@ -19847,7 +19788,7 @@
-
+
@@ -19860,7 +19801,7 @@
-
+
@@ -19876,9 +19817,9 @@
-
+
-
+
@@ -19889,7 +19830,7 @@
-
+
@@ -19908,47 +19849,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -19995,7 +19919,7 @@
-
+
@@ -20283,38 +20207,38 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -21263,7 +21187,7 @@
-
+
@@ -21271,7 +21195,7 @@
-
+
@@ -21828,8 +21752,8 @@
-
-
+
+
@@ -22785,7 +22709,7 @@
-
+
@@ -22843,15 +22767,15 @@
-
+
-
+
-
+
@@ -23224,12 +23148,12 @@
-
+
-
+
@@ -24030,7 +23954,7 @@
-
+
@@ -24219,7 +24143,7 @@
-
+
@@ -24833,12 +24757,12 @@
-
+
-
+
@@ -26282,7 +26206,7 @@
-
+
@@ -26300,7 +26224,7 @@
-
+
@@ -28956,8 +28880,8 @@
-
-
+
+
@@ -28998,8 +28922,8 @@
-
-
+
+
@@ -29016,8 +28940,8 @@
-
-
+
+
@@ -29066,8 +28990,8 @@
-
-
+
+
@@ -29102,8 +29026,8 @@
-
-
+
+
@@ -29119,8 +29043,8 @@
-
-
+
+
@@ -29148,8 +29072,8 @@
-
-
+
+
@@ -29165,8 +29089,8 @@
-
-
+
+
@@ -29635,13 +29559,13 @@
-
+
-
+
@@ -32163,7 +32087,7 @@
-
+
@@ -32184,7 +32108,7 @@
-
+
@@ -32584,7 +32508,7 @@
-
+
@@ -33568,7 +33492,7 @@
-
+
@@ -33826,10 +33750,10 @@
-
+
-
+
@@ -34835,7 +34759,7 @@
-
+
@@ -36502,7 +36426,7 @@
-
+
@@ -36512,6 +36436,7 @@
+
@@ -37023,7 +36948,7 @@
-
+
@@ -37107,41 +37032,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -37368,10 +37258,10 @@
-
+
-
+
@@ -37440,10 +37330,10 @@
-
+
-
+
@@ -37485,18 +37375,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -37516,7 +37406,7 @@
-
+
@@ -37793,7 +37683,7 @@
-
+
@@ -39590,7 +39480,7 @@
-
+
@@ -39682,7 +39572,7 @@
-
+
@@ -40671,7 +40561,7 @@
-
+
@@ -40690,7 +40580,7 @@
-
+
@@ -41978,7 +41868,7 @@
-
+
@@ -42003,21 +41893,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -42028,7 +41918,7 @@
-
+
@@ -42036,7 +41926,7 @@
-
+
@@ -42050,7 +41940,7 @@
-
+
@@ -42146,167 +42036,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -42524,7 +42253,7 @@
-
+
@@ -42612,9 +42341,9 @@
-
+
-
+
@@ -42626,18 +42355,18 @@
-
+
-
+
-
+
-
+
@@ -42663,7 +42392,7 @@
-
+
@@ -42689,7 +42418,7 @@
-
+
@@ -44262,11 +43991,11 @@
-
+
-
+
-
+
@@ -44275,12 +44004,12 @@
-
+
-
+
@@ -44291,7 +44020,7 @@
-
+
@@ -44299,13 +44028,13 @@
-
+
-
+
@@ -44319,14 +44048,6 @@
-
-
-
-
-
-
-
-
@@ -44569,7 +44290,7 @@
-
+
@@ -44577,7 +44298,7 @@
-
+
@@ -44585,7 +44306,7 @@
-
+
@@ -44631,6 +44352,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -45496,10 +45307,10 @@
-
+
-
+
@@ -45595,10 +45406,10 @@
-
+
-
+
@@ -45782,7 +45593,7 @@
-
+
@@ -46001,7 +45812,7 @@
-
+
@@ -46147,7 +45958,7 @@
-
+
@@ -46202,7 +46013,7 @@
-
+
@@ -46265,10 +46076,10 @@
-
+
-
+
@@ -46280,7 +46091,7 @@
-
+
@@ -46305,7 +46116,7 @@
-
+
@@ -46324,7 +46135,7 @@
-
+
@@ -46509,35 +46320,13 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -47481,10 +47270,10 @@
-
+
-
+
@@ -47994,10 +47783,10 @@
-
+
-
+
@@ -48105,7 +47894,7 @@
-
+
@@ -48121,7 +47910,7 @@
-
+
@@ -48129,13 +47918,13 @@
-
+
-
+
-
+
@@ -48143,7 +47932,7 @@
-
+
@@ -48627,10 +48416,10 @@
-
+
-
+
@@ -48685,7 +48474,7 @@
-
+
@@ -48694,7 +48483,7 @@
-
+
@@ -48728,7 +48517,7 @@
-
+
@@ -48751,7 +48540,7 @@
-
+
@@ -48855,7 +48644,7 @@
-
+
@@ -48864,7 +48653,7 @@
-
+
@@ -48890,7 +48679,7 @@
-
+
@@ -48912,7 +48701,7 @@
-
+
@@ -48921,7 +48710,7 @@
-
+
@@ -48932,7 +48721,7 @@
-
+
@@ -48991,10 +48780,10 @@
-
+
-
+
@@ -49173,7 +48962,7 @@
-
+
@@ -49191,7 +48980,7 @@
-
+
@@ -49207,10 +48996,10 @@
-
+
-
+
@@ -49241,13 +49030,13 @@
-
+
-
+
@@ -49368,15 +49157,15 @@
-
+
-
+
-
+
-
+
@@ -49389,26 +49178,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -49416,7 +49205,7 @@
-
+
@@ -49426,10 +49215,10 @@
-
+
-
+
@@ -49517,13 +49306,13 @@
-
+
-
+
@@ -49576,13 +49365,13 @@
-
+
-
+
@@ -50916,10 +50705,10 @@
-
+
-
+
@@ -50931,7 +50720,7 @@
-
+
@@ -51579,7 +51368,7 @@
-
+
@@ -51587,7 +51376,7 @@
-
+
@@ -51595,7 +51384,7 @@
-
+
@@ -51893,7 +51682,7 @@
-
+
@@ -51985,7 +51774,7 @@
-
+
@@ -52003,7 +51792,7 @@
-
+
@@ -52036,7 +51825,7 @@
-
+
@@ -52054,7 +51843,7 @@
-
+
@@ -52280,7 +52069,7 @@
-
+
@@ -53280,183 +53069,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -53998,20 +53610,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -54023,15 +53621,15 @@
-
+
-
+
-
+
@@ -54040,7 +53638,7 @@
-
+
@@ -54075,24 +53673,24 @@
-
+
-
+
-
+
-
+
-
+
@@ -54102,7 +53700,7 @@
-
+
@@ -54111,11 +53709,11 @@
-
+
-
+
@@ -54648,12 +54246,12 @@
-
+
-
+
-
+
@@ -55317,12 +54915,12 @@
-
+
-
+
@@ -55406,25 +55004,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -55441,15 +55020,15 @@
-
+
-
+
-
+
@@ -55619,7 +55198,7 @@
-
+
@@ -55633,7 +55212,7 @@
-
+
@@ -55681,7 +55260,7 @@
-
+
@@ -55691,7 +55270,7 @@
-
+
@@ -55737,37 +55316,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -55976,28 +55555,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -56181,7 +55738,7 @@
-
+
@@ -56191,7 +55748,7 @@
-
+
@@ -57509,17 +57066,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -57773,12 +57319,6 @@
-
-
-
-
-
-
@@ -57786,7 +57326,7 @@
-
+
@@ -57799,13 +57339,19 @@
-
+
-
+
+
+
+
+
+
+
@@ -57817,13 +57363,13 @@
-
+
-
+
@@ -57832,7 +57378,7 @@
-
+
@@ -57842,7 +57388,7 @@
-
+
@@ -57856,7 +57402,7 @@
-
+
@@ -57872,7 +57418,7 @@
-
+
@@ -57903,7 +57449,7 @@
-
+
@@ -57912,7 +57458,7 @@
-
+
@@ -57927,11 +57473,11 @@
-
+
-
+
@@ -58427,7 +57973,7 @@
-
+
@@ -58445,7 +57991,7 @@
-
+
@@ -58472,7 +58018,7 @@
-
+
@@ -58693,13 +58239,13 @@
-
+
-
+
-
+
@@ -58723,7 +58269,7 @@
-
+
@@ -58741,13 +58287,13 @@
-
+
-
+
@@ -58756,7 +58302,7 @@
-
+
@@ -58765,11 +58311,11 @@
-
+
-
+
@@ -58778,7 +58324,7 @@
-
+
@@ -58932,7 +58478,7 @@
-
+
@@ -58970,244 +58516,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -59304,7 +58612,7 @@
-
+
@@ -59315,8 +58623,8 @@
-
-
+
+
@@ -59327,7 +58635,7 @@
-
+
@@ -59411,7 +58719,7 @@
-
+
@@ -59568,7 +58876,7 @@
-
+
@@ -59803,7 +59111,7 @@
-
+
@@ -59990,7 +59298,7 @@
-
+
@@ -60026,7 +59334,7 @@
-
+
@@ -60165,7 +59473,7 @@
-
+
@@ -60369,10 +59677,10 @@
-
+
-
+
@@ -60443,13 +59751,13 @@
-
+
-
+
-
+
@@ -60458,10 +59766,10 @@
-
+
-
+
@@ -60469,7 +59777,7 @@
-
+
@@ -60477,7 +59785,7 @@
-
+
@@ -60485,7 +59793,7 @@
-
+
@@ -60688,8 +59996,8 @@
-
-
+
+
@@ -60697,13 +60005,13 @@
-
+
-
+
@@ -60714,18 +60022,18 @@
-
+
-
+
-
+
-
+
@@ -60753,13 +60061,13 @@
-
+
-
+
@@ -61017,7 +60325,7 @@
-
+
@@ -61162,7 +60470,7 @@
-
+
@@ -61206,7 +60514,7 @@
-
+
@@ -61689,12 +60997,12 @@
-
+
-
+
-
+
@@ -61704,13 +61012,13 @@
-
+
-
+
@@ -61883,7 +61191,7 @@
-
+
@@ -62243,7 +61551,7 @@
-
+
@@ -62630,12 +61938,12 @@
-
+
-
+
@@ -62643,7 +61951,7 @@
-
+
@@ -62651,7 +61959,7 @@
-
+
@@ -62683,7 +61991,7 @@
-
+
@@ -62701,7 +62009,7 @@
-
+
@@ -62718,12 +62026,12 @@
-
+
-
+
@@ -62750,7 +62058,7 @@
-
+
@@ -63448,15 +62756,15 @@
-
+
-
+
-
+
@@ -63467,7 +62775,7 @@
-
+
@@ -63475,7 +62783,7 @@
-
+
@@ -63483,15 +62791,15 @@
-
+
-
+
-
+
@@ -63499,7 +62807,7 @@
-
+
@@ -63507,7 +62815,7 @@
-
+
@@ -63515,7 +62823,7 @@
-
+
@@ -63529,7 +62837,7 @@
-
+
@@ -63540,7 +62848,7 @@
-
+
@@ -63548,7 +62856,7 @@
-
+
@@ -63556,7 +62864,7 @@
-
+
@@ -63564,7 +62872,7 @@
-
+
@@ -63572,7 +62880,7 @@
-
+
@@ -63583,7 +62891,7 @@
-
+
@@ -63591,7 +62899,7 @@
-
+
@@ -63700,12 +63008,7 @@
-
-
-
-
-
-
+
@@ -63788,7 +63091,7 @@
-
+
@@ -65608,7 +64911,7 @@
-
+
@@ -66305,7 +65608,7 @@
-
+
@@ -66316,7 +65619,7 @@
-
+
@@ -68687,18 +67990,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -68706,7 +68009,7 @@
-
+
@@ -69085,20 +68388,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -70067,14 +69356,6 @@
-
-
-
-
-
-
-
-
@@ -70086,20 +69367,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -70842,7 +70109,7 @@
-
+
@@ -70850,7 +70117,7 @@
-
+
@@ -71741,10 +71008,10 @@
-
+
-
+
@@ -71797,10 +71064,10 @@
-
+
-
+
@@ -72408,7 +71675,7 @@
-
+
@@ -72422,7 +71689,7 @@
-
+
@@ -72462,10 +71729,10 @@
-
+
-
+
@@ -73189,19 +72456,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -73209,7 +72476,7 @@
-
+
@@ -73220,7 +72487,7 @@
-
+
@@ -73228,7 +72495,7 @@
-
+
@@ -73239,7 +72506,7 @@
-
+
@@ -73248,7 +72515,7 @@
-
+
@@ -73382,17 +72649,17 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -73854,7 +73121,7 @@
-
+
@@ -73901,7 +73168,7 @@
-
+
@@ -74161,7 +73428,7 @@
-
+
@@ -75521,7 +74788,7 @@
-
+
@@ -75542,7 +74809,7 @@
-
+
@@ -76944,12 +76211,7 @@
-
-
-
-
-
-
+
@@ -78433,6 +77695,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -78897,23 +78170,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -80869,7 +80125,7 @@
-
+
@@ -81541,6 +80797,739 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -82698,31 +82687,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -83554,7 +83518,7 @@
-
+
@@ -84283,7 +84247,7 @@
-
+
@@ -84293,7 +84257,7 @@
-
+
@@ -84605,13 +84569,13 @@
-
+
-
+
@@ -84680,7 +84644,7 @@
-
+
@@ -84706,7 +84670,7 @@
-
+
@@ -84714,14 +84678,6 @@
-
-
-
-
-
-
-
-
@@ -85392,7 +85348,7 @@
-
+
@@ -85411,7 +85367,7 @@
-
+
@@ -85515,168 +85471,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -85918,14 +85713,6 @@
-
-
-
-
-
-
-
-
@@ -86201,6 +85988,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -86492,24 +86289,15 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -86564,50 +86352,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -86633,14 +86377,6 @@
-
-
-
-
-
-
-
-
@@ -86785,45 +86521,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -86976,7 +86673,7 @@
-
+
@@ -86992,10 +86689,10 @@
-
+
-
+
@@ -87003,40 +86700,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
@@ -87050,7 +86730,7 @@
-
+
@@ -87070,9 +86750,9 @@
-
+
-
+
@@ -87158,7 +86838,7 @@
-
+
@@ -87269,92 +86949,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -87376,25 +86970,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -87531,7 +87106,7 @@
-
+
@@ -87579,7 +87154,7 @@
-
+
@@ -87764,7 +87339,7 @@
-
+
@@ -87776,15 +87351,15 @@
-
+
-
+
-
+
-
+
@@ -87801,7 +87376,7 @@
-
+
@@ -87932,7 +87507,7 @@
-
+
@@ -87980,6 +87555,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -88046,7 +87638,7 @@
-
+
@@ -88061,7 +87653,7 @@
-
+
@@ -88114,25 +87706,46 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
+
@@ -88377,16 +87990,16 @@
-
-
+
+
-
-
+
+
@@ -88511,7 +88124,7 @@
-
+
@@ -88742,7 +88355,7 @@
-
+
@@ -88820,34 +88433,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -89373,7 +88958,7 @@
-
+
@@ -89411,7 +88996,7 @@
-
+
@@ -89502,7 +89087,7 @@
-
+
@@ -89550,15 +89135,15 @@
-
+
-
+
-
+
@@ -89696,9 +89281,9 @@
-
+
-
+
@@ -89723,7 +89308,7 @@
-
+
@@ -89732,7 +89317,7 @@
-
+
@@ -90260,17 +89845,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -90682,7 +90256,7 @@
-
+
@@ -91434,7 +91008,7 @@
-
+
@@ -91454,7 +91028,7 @@
-
+
@@ -91846,7 +91420,7 @@
-
+
@@ -92335,7 +91909,7 @@
-
+
@@ -92561,7 +92135,7 @@
-
+
@@ -92579,7 +92153,7 @@
-
+
@@ -93293,10 +92867,10 @@
-
+
-
+
@@ -93324,7 +92898,7 @@
-
+
@@ -93362,7 +92936,7 @@
-
+
@@ -93383,7 +92957,7 @@
-
+
@@ -93407,7 +92981,7 @@
-
+
@@ -93415,7 +92989,7 @@
-
+
@@ -93714,15 +93288,15 @@
-
+
-
+
-
+
@@ -93736,7 +93310,7 @@
-
+
@@ -93762,7 +93336,7 @@
-
+
@@ -93786,15 +93360,15 @@
-
+
-
+
-
+
@@ -93893,7 +93467,7 @@
-
+
@@ -93914,12 +93488,12 @@
-
+
-
+
@@ -93936,7 +93510,7 @@
-
+
@@ -94238,7 +93812,7 @@
-
+
@@ -94302,7 +93876,7 @@
-
+
@@ -95066,34 +94640,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -95862,7 +95408,7 @@
-
+
@@ -95909,7 +95455,7 @@
-
+
@@ -95957,10 +95503,10 @@
-
+
-
+
@@ -96073,8 +95619,8 @@
-
-
+
+
@@ -96198,7 +95744,7 @@
-
+
@@ -96381,7 +95927,7 @@
-
+
@@ -96851,7 +96397,7 @@
-
+
@@ -97056,8 +96602,8 @@
-
-
+
+
@@ -97344,13 +96890,13 @@
-
+
-
+
-
+
@@ -97392,7 +96938,7 @@
-
+
@@ -97402,7 +96948,7 @@
-
+
@@ -97410,7 +96956,7 @@
-
+
@@ -98806,8 +98352,8 @@
-
-
+
+
@@ -98823,7 +98369,7 @@
-
+
@@ -98928,16 +98474,16 @@
-
+
-
+
-
+
@@ -98964,7 +98510,7 @@
-
+
@@ -98972,7 +98518,7 @@
-
+
@@ -98980,7 +98526,7 @@
-
+
@@ -98994,7 +98540,7 @@
-
+
@@ -99010,7 +98556,7 @@
-
+
@@ -99049,23 +98595,23 @@
-
+
-
+
-
+
-
+
@@ -99075,7 +98621,7 @@
-
+
@@ -99085,7 +98631,7 @@
-
+
@@ -99104,10 +98650,10 @@
-
+
-
+
@@ -99230,7 +98776,7 @@
-
+
@@ -99242,7 +98788,7 @@
-
+
@@ -99273,7 +98819,7 @@
-
+
@@ -99285,7 +98831,7 @@
-
+
@@ -99336,10 +98882,10 @@
-
+
-
+
@@ -99368,7 +98914,7 @@
-
+
@@ -99376,7 +98922,7 @@
-
+
@@ -99823,7 +99369,7 @@
-
+
@@ -99837,7 +99383,7 @@
-
+
@@ -100225,7 +99771,7 @@
-
+
@@ -101509,7 +101055,7 @@
-
+
@@ -101517,7 +101063,7 @@
-
+
@@ -101525,7 +101071,7 @@
-
+
@@ -101533,7 +101079,7 @@
-
+
@@ -101547,15 +101093,15 @@
-
+
-
+
-
+
-
+
@@ -101563,7 +101109,7 @@
-
+
@@ -101611,34 +101157,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -101885,7 +101403,7 @@
-
+
@@ -102685,7 +102203,7 @@
-
+
@@ -102923,7 +102441,7 @@
-
+
@@ -102968,7 +102486,7 @@
-
+
@@ -103318,10 +102836,10 @@
-
+
-
+
@@ -104051,16 +103569,16 @@
-
+
-
+
-
+
@@ -104068,7 +103586,7 @@
-
+
@@ -104146,45 +103664,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -104314,8 +103793,8 @@
-
-
+
+
@@ -104402,14 +103881,6 @@
-
-
-
-
-
-
-
-
@@ -104523,7 +103994,7 @@
-
+
@@ -104559,7 +104030,7 @@
-
+
@@ -104612,12 +104083,12 @@
-
+
-
+
@@ -104630,12 +104101,12 @@
-
+
-
+
-
+
@@ -104652,15 +104123,15 @@
-
+
-
+
-
+
@@ -104682,7 +104153,7 @@
-
+
@@ -104772,23 +104243,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -104999,232 +104453,13 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -105232,145 +104467,134 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
@@ -105380,14 +104604,14 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -105501,55 +104725,48 @@
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
@@ -105557,10 +104774,6 @@
-
-
-
-
@@ -105625,15 +104838,15 @@
-
+
-
+
-
+
@@ -105855,28 +105068,28 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
@@ -105884,9 +105097,9 @@
-
+
-
+
@@ -105900,7 +105113,7 @@
-
+
@@ -105909,7 +105122,7 @@
-
+
@@ -106082,13 +105295,24 @@
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -106117,7 +105341,7 @@
-
+
@@ -106128,7 +105352,7 @@
-
+
@@ -106139,7 +105363,7 @@
-
+
@@ -106297,20 +105521,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -106777,13 +105987,13 @@
-
+
-
+
-
+
@@ -106892,7 +106102,7 @@
-
+
@@ -106903,7 +106113,7 @@
-
+
@@ -106914,7 +106124,7 @@
-
+
@@ -106956,7 +106166,7 @@
-
+
@@ -106965,9 +106175,9 @@
-
+
-
+
@@ -106983,10 +106193,10 @@
-
+
-
+
@@ -107287,10 +106497,10 @@
-
+
-
+
@@ -107429,7 +106639,7 @@
-
+
@@ -107509,15 +106719,15 @@
-
+
-
+
-
+
@@ -107646,7 +106856,7 @@
-
+
@@ -107709,7 +106919,7 @@
-
+
@@ -107928,7 +107138,7 @@
-
+
@@ -107957,7 +107167,7 @@
-
+
@@ -108216,10 +107426,10 @@
-
+
-
+
@@ -108270,7 +107480,7 @@
-
+
@@ -108284,25 +107494,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -108479,7 +107670,7 @@
-
+
@@ -108487,26 +107678,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -108514,7 +107686,7 @@
-
+
@@ -108547,7 +107719,7 @@
-
+
@@ -108589,26 +107761,26 @@
-
+
-
+
-
+
-
+
@@ -109070,7 +108242,7 @@
-
+
@@ -109162,7 +108334,7 @@
-
+
@@ -109232,7 +108404,7 @@
-
+
@@ -109240,7 +108412,7 @@
-
+
@@ -109254,7 +108426,7 @@
-
+
@@ -109262,7 +108434,7 @@
-
+
@@ -109270,32 +108442,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -109728,7 +108875,7 @@
-
+
@@ -110143,30 +109290,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -110174,27 +109321,12 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -110315,7 +109447,7 @@
-
+
@@ -110325,7 +109457,7 @@
-
+
@@ -111023,52 +110155,52 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -111109,15 +110241,15 @@
-
+
-
+
-
+
@@ -111125,15 +110257,15 @@
-
+
-
+
-
+
@@ -111141,7 +110273,7 @@
-
+
@@ -111149,7 +110281,7 @@
-
+
@@ -111160,7 +110292,7 @@
-
+
@@ -111171,7 +110303,7 @@
-
+
@@ -111179,7 +110311,7 @@
-
+
@@ -111209,12 +110341,12 @@
-
+
-
+
-
+
@@ -111279,7 +110411,7 @@
-
+
@@ -111287,7 +110419,7 @@
-
+
@@ -111416,7 +110548,7 @@
-
+
@@ -111457,61 +110589,46 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -111520,40 +110637,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
@@ -111561,21 +110668,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -111613,7 +110705,7 @@
-
+
@@ -111631,7 +110723,7 @@
-
+
@@ -111835,10 +110927,10 @@
-
+
-
+
@@ -111964,13 +111056,13 @@
-
+
-
+
@@ -112138,8 +111230,8 @@
-
-
+
+
@@ -112423,10 +111515,10 @@
-
+
-
+
@@ -112448,10 +111540,10 @@
-
+
-
+
@@ -112629,7 +111721,7 @@
-
+
@@ -112663,14 +111755,14 @@
-
+
-
+
@@ -112683,7 +111775,7 @@
-
+
@@ -112790,17 +111882,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -112978,14 +112059,6 @@
-
-
-
-
-
-
-
-
@@ -113007,10 +112080,10 @@
-
+
-
+
@@ -113018,14 +112091,6 @@
-
-
-
-
-
-
-
-
@@ -113044,25 +112109,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -113193,10 +112239,10 @@
-
+
-
+
@@ -113211,7 +112257,7 @@
-
+
@@ -113309,7 +112355,7 @@
-
+
@@ -113532,15 +112578,15 @@
-
+
-
+
-
+
-
+
@@ -113555,22 +112601,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -113950,145 +112980,207 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -114096,41 +113188,29 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
@@ -114202,6 +113282,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -114247,7 +113338,7 @@
-
+
@@ -114545,7 +113636,7 @@
-
+
@@ -115733,10 +114824,10 @@
-
+
-
+
@@ -115765,7 +114856,7 @@
-
+
@@ -116357,7 +115448,7 @@
-
+
@@ -117305,7 +116396,7 @@
-
+
@@ -117317,7 +116408,7 @@
-
+
@@ -118833,7 +117924,7 @@
-
+
@@ -118841,7 +117932,7 @@
-
+
@@ -118849,7 +117940,7 @@
-
+
@@ -118863,17 +117954,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -119562,7 +118642,6 @@
-
@@ -119584,14 +118663,6 @@
-
-
-
-
-
-
-
-
@@ -119688,45 +118759,45 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -119740,12 +118811,12 @@
-
+
-
+
@@ -119756,7 +118827,7 @@
-
+
@@ -119770,7 +118841,7 @@
-
+
@@ -119784,12 +118855,7 @@
-
-
-
-
-
-
+
@@ -119803,87 +118869,73 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -119897,7 +118949,7 @@
-
+
@@ -119905,7 +118957,7 @@
-
+
@@ -119930,7 +118982,7 @@
-
+
@@ -119961,7 +119013,7 @@
-
+
@@ -119981,7 +119033,7 @@
-
+
@@ -119998,7 +119050,7 @@
-
+
@@ -120009,23 +119061,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -120033,7 +119069,7 @@
-
+
@@ -120041,7 +119077,7 @@
-
+
@@ -120049,7 +119085,7 @@
-
+
@@ -120063,7 +119099,7 @@
-
+
@@ -120071,7 +119107,7 @@
-
+
@@ -120082,7 +119118,7 @@
-
+
@@ -120107,7 +119143,7 @@
-
+
@@ -120324,7 +119360,7 @@
-
+
@@ -120332,7 +119368,7 @@
-
+
@@ -120346,15 +119382,15 @@
-
+
-
+
-
+
-
+
@@ -120362,23 +119398,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -120470,17 +119489,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -120553,7 +119561,7 @@
-
+
@@ -120562,7 +119570,7 @@
-
+
@@ -120571,7 +119579,7 @@
-
+
@@ -120622,25 +119630,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -120655,13 +119644,13 @@
-
+
-
+
@@ -120785,9 +119774,9 @@
-
+
-
+
@@ -120845,13 +119834,13 @@
-
+
-
+
@@ -120886,23 +119875,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -121587,31 +120559,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -121622,7 +120594,7 @@
-
+
@@ -121633,7 +120605,7 @@
-
+
@@ -121650,7 +120622,7 @@
-
+
@@ -121667,7 +120639,7 @@
-
+
@@ -121676,24 +120648,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -121701,7 +120673,7 @@
-
+
@@ -121709,7 +120681,7 @@
-
+
@@ -121717,7 +120689,7 @@
-
+
@@ -121740,7 +120712,7 @@
-
+
@@ -121818,20 +120790,12 @@
-
+
-
-
-
-
-
-
-
-
@@ -122698,7 +121662,7 @@
-
+
@@ -122866,7 +121830,7 @@
-
+
@@ -122937,9 +121901,6 @@
-
-
-
@@ -123550,7 +122511,7 @@
-
+
@@ -123667,10 +122628,10 @@
-
+
-
+
@@ -123755,10 +122716,10 @@
-
+
-
+
@@ -123777,10 +122738,10 @@
-
+
-
+
@@ -124627,7 +123588,7 @@
-
+
@@ -125841,7 +124802,7 @@
-
+
@@ -126209,7 +125170,7 @@
-
+
@@ -126429,7 +125390,7 @@
-
+
@@ -126537,9 +125498,9 @@
-
+
-
+
@@ -126553,6 +125514,6 @@
diff --git a/android/abi_gki_aarch64_d6430e6763.xml b/android/abi_gki_aarch64_d6430e6763.xml
index 637e934a7424..02a9e11f010b 100644
--- a/android/abi_gki_aarch64_d6430e6763.xml
+++ b/android/abi_gki_aarch64_d6430e6763.xml
@@ -1398,6 +1398,8 @@
+
+
@@ -2849,7 +2851,7 @@
-
+
@@ -2894,7 +2896,7 @@
-
+
@@ -3142,7 +3144,7 @@
-
+
@@ -3156,7 +3158,7 @@
-
+
@@ -3202,291 +3204,291 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
@@ -3605,60 +3607,60 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3815,7 +3817,7 @@
-
+
@@ -3829,7 +3831,7 @@
-
+
@@ -3990,41 +3992,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -4148,34 +4115,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -4556,10 +4495,10 @@
-
+
-
+
@@ -4884,7 +4823,7 @@
-
+
@@ -4976,22 +4915,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -5059,20 +4982,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -6265,7 +6174,7 @@
-
+
@@ -6295,7 +6204,7 @@
-
+
@@ -6305,7 +6214,7 @@
-
+
@@ -6407,7 +6316,7 @@
-
+
@@ -6929,21 +6838,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -7174,7 +7068,7 @@
-
+
@@ -7699,15 +7593,15 @@
-
+
-
+
-
+
-
+
@@ -7724,7 +7618,7 @@
-
+
@@ -7937,7 +7831,7 @@
-
+
@@ -7995,15 +7889,15 @@
-
+
-
+
-
+
@@ -8251,7 +8145,7 @@
-
+
@@ -8360,12 +8254,12 @@
-
+
-
+
@@ -9133,7 +9027,7 @@
-
+
@@ -9322,7 +9216,7 @@
-
+
@@ -9894,12 +9788,12 @@
-
+
-
+
@@ -11480,12 +11374,7 @@
-
-
-
-
-
-
+
@@ -12328,13 +12217,13 @@
-
+
-
+
@@ -12732,7 +12621,7 @@
-
+
@@ -14511,7 +14400,7 @@
-
+
@@ -14532,7 +14421,7 @@
-
+
@@ -15598,7 +15487,7 @@
-
+
@@ -16030,10 +15919,10 @@
-
+
-
+
@@ -16546,7 +16435,7 @@
-
+
@@ -17608,7 +17497,7 @@
-
+
@@ -18716,7 +18605,7 @@
-
+
@@ -18730,12 +18619,12 @@
-
+
-
+
-
+
@@ -19803,49 +19692,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -19917,17 +19763,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -20069,10 +19904,10 @@
-
+
-
+
@@ -20141,10 +19976,10 @@
-
+
-
+
@@ -20186,18 +20021,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -20217,7 +20052,7 @@
-
+
@@ -20461,7 +20296,7 @@
-
+
@@ -20838,7 +20673,7 @@
-
+
@@ -20930,7 +20765,7 @@
-
+
@@ -21754,7 +21589,7 @@
-
+
@@ -21779,21 +21614,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -21804,7 +21639,7 @@
-
+
@@ -21812,7 +21647,7 @@
-
+
@@ -21826,7 +21661,7 @@
-
+
@@ -22073,7 +21908,7 @@
-
+
@@ -22140,7 +21975,7 @@
-
+
@@ -22369,6 +22204,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -22536,7 +22464,7 @@
-
+
@@ -22727,7 +22655,7 @@
-
+
@@ -22873,7 +22801,7 @@
-
+
@@ -22928,7 +22856,7 @@
-
+
@@ -22991,10 +22919,10 @@
-
+
-
+
@@ -23006,7 +22934,7 @@
-
+
@@ -23031,7 +22959,7 @@
-
+
@@ -23050,7 +22978,7 @@
-
+
@@ -23215,9 +23143,9 @@
-
+
-
+
@@ -24078,10 +24006,10 @@
-
+
-
+
@@ -24591,10 +24519,10 @@
-
+
-
+
@@ -24645,28 +24573,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -24724,7 +24630,7 @@
-
+
@@ -24740,7 +24646,7 @@
-
+
@@ -24748,13 +24654,13 @@
-
+
-
+
-
+
@@ -24762,7 +24668,7 @@
-
+
@@ -25246,10 +25152,10 @@
-
+
-
+
@@ -25304,7 +25210,7 @@
-
+
@@ -25313,7 +25219,7 @@
-
+
@@ -25347,7 +25253,7 @@
-
+
@@ -25370,7 +25276,7 @@
-
+
@@ -25474,7 +25380,7 @@
-
+
@@ -25483,7 +25389,7 @@
-
+
@@ -25518,7 +25424,7 @@
-
+
@@ -25540,7 +25446,7 @@
-
+
@@ -25549,7 +25455,7 @@
-
+
@@ -25560,7 +25466,7 @@
-
+
@@ -25619,10 +25525,10 @@
-
+
-
+
@@ -25801,7 +25707,7 @@
-
+
@@ -25819,7 +25725,7 @@
-
+
@@ -25835,10 +25741,10 @@
-
+
-
+
@@ -25869,13 +25775,13 @@
-
+
-
+
@@ -25996,15 +25902,15 @@
-
+
-
+
-
+
-
+
@@ -26017,26 +25923,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -26044,7 +25950,7 @@
-
+
@@ -26054,10 +25960,10 @@
-
+
-
+
@@ -26145,13 +26051,13 @@
-
+
-
+
@@ -26204,13 +26110,13 @@
-
+
-
+
@@ -27501,10 +27407,10 @@
-
+
-
+
@@ -27516,7 +27422,7 @@
-
+
@@ -28164,7 +28070,7 @@
-
+
@@ -28172,7 +28078,7 @@
-
+
@@ -28180,7 +28086,7 @@
-
+
@@ -28478,7 +28384,7 @@
-
+
@@ -28570,7 +28476,7 @@
-
+
@@ -28588,7 +28494,7 @@
-
+
@@ -28621,7 +28527,7 @@
-
+
@@ -28639,7 +28545,7 @@
-
+
@@ -28861,7 +28767,7 @@
-
+
@@ -30300,7 +30206,7 @@
-
+
@@ -30308,15 +30214,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -30852,24 +30750,24 @@
-
+
-
+
-
+
-
+
-
+
@@ -30878,21 +30776,21 @@
-
+
-
+
-
+
-
+
@@ -31036,7 +30934,7 @@
-
+
@@ -31455,17 +31353,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -31724,26 +31611,18 @@
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -31798,13 +31677,13 @@
-
+
-
+
@@ -31823,7 +31702,7 @@
-
+
@@ -31966,10 +31845,10 @@
-
+
-
+
@@ -31991,10 +31870,10 @@
-
+
-
+
@@ -32028,7 +31907,7 @@
-
+
@@ -32072,7 +31951,7 @@
-
+
@@ -32300,26 +32179,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -32352,7 +32217,7 @@
-
+
@@ -32360,7 +32225,7 @@
-
+
@@ -32368,7 +32233,7 @@
-
+
@@ -32381,17 +32246,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -32486,7 +32340,7 @@
-
+
@@ -32507,14 +32361,14 @@
-
+
-
+
@@ -32523,17 +32377,17 @@
-
+
-
+
-
+
@@ -32546,7 +32400,7 @@
-
+
@@ -32562,17 +32416,17 @@
-
+
-
+
-
+
@@ -32595,12 +32449,12 @@
-
+
-
+
@@ -32617,12 +32471,12 @@
-
+
-
+
@@ -32632,7 +32486,7 @@
-
+
@@ -32647,12 +32501,12 @@
-
+
-
+
-
+
@@ -32670,7 +32524,7 @@
-
+
@@ -34134,11 +33988,11 @@
-
+
-
+
@@ -34146,7 +34000,7 @@
-
+
@@ -34171,11 +34025,11 @@
-
+
-
+
@@ -35657,7 +35511,7 @@
-
+
@@ -35668,7 +35522,7 @@
-
+
@@ -36116,41 +35970,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -39637,23 +39456,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -39874,109 +39676,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -40115,25 +39815,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -40164,6 +39845,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -40188,7 +39885,7 @@
-
+
@@ -40196,15 +39893,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -40822,10 +40511,10 @@
-
+
-
+
@@ -40878,10 +40567,10 @@
-
+
-
+
@@ -40936,7 +40625,7 @@
-
+
@@ -40970,7 +40659,7 @@
-
+
@@ -41494,7 +41183,7 @@
-
+
@@ -41508,7 +41197,7 @@
-
+
@@ -41548,10 +41237,10 @@
-
+
-
+
@@ -42059,19 +41748,19 @@
-
+
-
+
-
+
-
+
-
+
@@ -42079,7 +41768,7 @@
-
+
@@ -42090,7 +41779,7 @@
-
+
@@ -42098,7 +41787,7 @@
-
+
@@ -42109,7 +41798,7 @@
-
+
@@ -42118,7 +41807,7 @@
-
+
@@ -42509,7 +42198,7 @@
-
+
@@ -42562,7 +42251,7 @@
-
+
@@ -44511,7 +44200,7 @@
-
+
@@ -44530,7 +44219,7 @@
-
+
@@ -48317,7 +48006,7 @@
-
+
@@ -49819,7 +49508,7 @@
-
+
@@ -50569,7 +50258,7 @@
-
+
@@ -50579,16 +50268,6 @@
-
-
-
-
-
-
-
-
-
-
@@ -50620,41 +50299,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -50679,10 +50323,10 @@
-
+
-
+
@@ -50700,7 +50344,7 @@
-
+
@@ -50991,7 +50635,7 @@
-
+
@@ -51019,7 +50663,7 @@
-
+
@@ -51217,23 +50861,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -51303,20 +50930,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -51325,7 +50938,7 @@
-
+
@@ -51463,23 +51076,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -51591,43 +51187,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
+
-
+
-
-
-
+
+
@@ -51681,7 +51256,7 @@
-
+
@@ -51896,7 +51471,7 @@
-
+
@@ -51911,7 +51486,7 @@
-
+
@@ -51947,7 +51522,7 @@
-
+
@@ -51955,7 +51530,7 @@
-
+
@@ -52167,167 +51742,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -52362,10 +51776,10 @@
-
+
-
+
@@ -52373,7 +51787,7 @@
-
+
@@ -52381,7 +51795,7 @@
-
+
@@ -52928,7 +52342,7 @@
-
+
@@ -53323,7 +52737,7 @@
-
+
@@ -53415,24 +52829,24 @@
-
+
-
-
+
+
-
+
-
+
@@ -53588,8 +53002,8 @@
-
-
+
+
@@ -53599,10 +53013,10 @@
-
+
-
+
@@ -53615,12 +53029,12 @@
-
+
-
+
-
+
@@ -53633,10 +53047,10 @@
-
+
-
+
@@ -53692,7 +53106,7 @@
-
+
@@ -53745,7 +53159,7 @@
-
+
@@ -53763,7 +53177,7 @@
-
+
@@ -54531,7 +53945,7 @@
-
+
@@ -54645,7 +54059,7 @@
-
+
@@ -54654,7 +54068,7 @@
-
+
@@ -54679,21 +54093,21 @@
-
+
-
+
-
+
-
+
@@ -54740,7 +54154,7 @@
-
+
@@ -54812,7 +54226,7 @@
-
+
@@ -54833,7 +54247,7 @@
-
+
@@ -54845,7 +54259,7 @@
-
+
@@ -54872,16 +54286,16 @@
-
-
+
+
-
-
+
+
@@ -55642,7 +55056,7 @@
-
+
@@ -57357,7 +56771,7 @@
-
+
@@ -57693,7 +57107,7 @@
-
+
@@ -57737,13 +57151,13 @@
-
+
-
+
@@ -57904,8 +57318,8 @@
-
-
+
+
@@ -58081,7 +57495,7 @@
-
+
@@ -58098,7 +57512,7 @@
-
+
@@ -58110,7 +57524,7 @@
-
+
@@ -58137,10 +57551,10 @@
-
+
-
+
@@ -58148,7 +57562,7 @@
-
+
@@ -58156,7 +57570,7 @@
-
+
@@ -58165,12 +57579,12 @@
-
+
-
+
@@ -58178,7 +57592,7 @@
-
+
@@ -58190,15 +57604,15 @@
-
+
-
+
-
+
@@ -58217,7 +57631,7 @@
-
+
@@ -58234,12 +57648,12 @@
-
+
-
+
@@ -58250,7 +57664,7 @@
-
+
@@ -58409,15 +57823,15 @@
-
+
-
+
-
+
@@ -58431,7 +57845,7 @@
-
+
@@ -58949,7 +58363,7 @@
-
+
@@ -59056,22 +58470,22 @@
-
+
-
+
-
+
-
+
@@ -59357,7 +58771,7 @@
-
+
@@ -59417,21 +58831,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -59451,7 +58865,7 @@
-
+
@@ -59459,7 +58873,7 @@
-
+
@@ -59471,7 +58885,7 @@
-
+
@@ -59497,7 +58911,7 @@
-
+
@@ -59999,8 +59413,8 @@
-
-
+
+
@@ -60029,8 +59443,8 @@
-
-
+
+
@@ -60317,7 +59731,7 @@
-
+
@@ -60523,8 +59937,8 @@
-
-
+
+
@@ -60905,13 +60319,13 @@
-
+
-
+
-
+
@@ -60953,7 +60367,7 @@
-
+
@@ -60979,10 +60393,10 @@
-
+
-
+
@@ -60991,7 +60405,7 @@
-
+
@@ -61178,13 +60592,13 @@
-
+
-
+
-
+
@@ -61214,7 +60628,7 @@
-
+
@@ -61333,7 +60747,7 @@
-
+
@@ -61344,7 +60758,7 @@
-
+
@@ -61520,21 +60934,21 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -62228,13 +61642,13 @@
-
-
+
+
-
+
@@ -62250,10 +61664,10 @@
-
+
-
+
@@ -62294,7 +61708,7 @@
-
+
@@ -63020,10 +62434,10 @@
-
+
-
+
@@ -63039,28 +62453,28 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -63068,7 +62482,7 @@
-
+
@@ -63092,7 +62506,7 @@
-
+
@@ -63103,7 +62517,7 @@
-
+
@@ -63121,26 +62535,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -63151,7 +62565,7 @@
-
+
@@ -63159,7 +62573,7 @@
-
+
@@ -63167,7 +62581,7 @@
-
+
@@ -63178,8 +62592,8 @@
-
-
+
+
@@ -63307,7 +62721,7 @@
-
+
@@ -63329,9 +62743,9 @@
-
+
-
+
@@ -63341,10 +62755,10 @@
-
+
-
+
@@ -63404,7 +62818,7 @@
-
+
@@ -63475,7 +62889,7 @@
-
+
@@ -63561,7 +62975,7 @@
-
+
@@ -63585,15 +62999,15 @@
-
+
-
+
-
+
@@ -63703,7 +63117,7 @@
-
+
@@ -63724,12 +63138,12 @@
-
+
-
+
@@ -63746,7 +63160,7 @@
-
+
@@ -63760,8 +63174,8 @@
-
-
+
+
@@ -63796,7 +63210,7 @@
-
+
@@ -63841,7 +63255,7 @@
-
+
@@ -64274,13 +63688,13 @@
-
+
-
+
@@ -64291,8 +63705,8 @@
-
-
+
+
@@ -64714,8 +64128,8 @@
-
-
+
+
@@ -65022,7 +64436,7 @@
-
+
@@ -65054,8 +64468,8 @@
-
-
+
+
@@ -65063,21 +64477,21 @@
-
+
-
+
-
+
-
+
@@ -65144,7 +64558,7 @@
-
+
@@ -65169,7 +64583,7 @@
-
+
@@ -65177,7 +64591,7 @@
-
+
@@ -65208,18 +64622,18 @@
-
+
-
+
-
+
-
+
@@ -65335,7 +64749,7 @@
-
+
@@ -65723,8 +65137,8 @@
-
-
+
+
@@ -65740,7 +65154,7 @@
-
+
@@ -65845,16 +65259,16 @@
-
+
-
+
-
+
@@ -65881,7 +65295,7 @@
-
+
@@ -65889,7 +65303,7 @@
-
+
@@ -65897,7 +65311,7 @@
-
+
@@ -65911,7 +65325,7 @@
-
+
@@ -65927,7 +65341,7 @@
-
+
@@ -65966,23 +65380,23 @@
-
+
-
+
-
+
-
+
@@ -65992,7 +65406,7 @@
-
+
@@ -66002,7 +65416,7 @@
-
+
@@ -66021,10 +65435,10 @@
-
+
-
+
@@ -66158,7 +65572,7 @@
-
+
@@ -66170,7 +65584,7 @@
-
+
@@ -66201,7 +65615,7 @@
-
+
@@ -66213,7 +65627,7 @@
-
+
@@ -66264,10 +65678,10 @@
-
+
-
+
@@ -66296,7 +65710,7 @@
-
+
@@ -66304,7 +65718,7 @@
-
+
@@ -66409,7 +65823,7 @@
-
+
@@ -66627,7 +66041,7 @@
-
+
@@ -68930,7 +68344,7 @@
-
+
@@ -68938,7 +68352,7 @@
-
+
@@ -68952,7 +68366,7 @@
-
+
@@ -68960,7 +68374,7 @@
-
+
@@ -68968,7 +68382,7 @@
-
+
@@ -68976,7 +68390,7 @@
-
+
@@ -68984,7 +68398,7 @@
-
+
@@ -68995,7 +68409,7 @@
-
+
@@ -69003,7 +68417,7 @@
-
+
@@ -69011,7 +68425,7 @@
-
+
@@ -69019,7 +68433,7 @@
-
+
@@ -69030,7 +68444,7 @@
-
+
@@ -69038,7 +68452,7 @@
-
+
@@ -69046,7 +68460,7 @@
-
+
@@ -69054,7 +68468,7 @@
-
+
@@ -69062,10 +68476,10 @@
-
+
-
+
@@ -69079,7 +68493,7 @@
-
+
@@ -69087,26 +68501,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -69115,12 +68529,12 @@
-
+
-
+
@@ -69136,7 +68550,7 @@
-
+
@@ -69149,7 +68563,7 @@
-
+
@@ -69160,7 +68574,7 @@
-
+
@@ -69168,7 +68582,7 @@
-
+
@@ -69178,29 +68592,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -69211,7 +68625,7 @@
-
+
@@ -69219,16 +68633,16 @@
-
-
+
+
-
+
-
+
@@ -69236,7 +68650,7 @@
-
+
@@ -69244,7 +68658,7 @@
-
+
@@ -69254,15 +68668,15 @@
-
+
-
+
-
+
@@ -69270,7 +68684,7 @@
-
+
@@ -69281,90 +68695,14 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -69400,7 +68738,7 @@
-
+
@@ -69408,33 +68746,33 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -69447,7 +68785,7 @@
-
+
@@ -69472,25 +68810,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -69501,7 +68820,7 @@
-
+
@@ -69583,11 +68902,11 @@
-
+
-
+
@@ -69655,7 +68974,7 @@
-
+
@@ -69689,7 +69008,7 @@
-
+
@@ -69941,7 +69260,7 @@
-
+
@@ -69960,7 +69279,7 @@
-
+
@@ -70014,7 +69333,7 @@
-
+
@@ -70032,7 +69351,7 @@
-
+
@@ -70059,7 +69378,7 @@
-
+
@@ -70280,13 +69599,13 @@
-
+
-
+
-
+
@@ -70310,7 +69629,7 @@
-
+
@@ -70328,13 +69647,13 @@
-
+
-
+
@@ -70343,7 +69662,7 @@
-
+
@@ -70352,11 +69671,11 @@
-
+
-
+
@@ -70365,7 +69684,7 @@
-
+
@@ -70519,7 +69838,7 @@
-
+
@@ -70567,7 +69886,7 @@
-
+
@@ -70581,23 +69900,23 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -70644,7 +69963,7 @@
-
+
@@ -70929,7 +70248,7 @@
-
+
@@ -71015,7 +70334,7 @@
-
+
@@ -71328,18 +70647,18 @@
-
+
-
+
-
+
-
+
@@ -71408,10 +70727,10 @@
-
+
-
+
@@ -71434,8 +70753,8 @@
-
-
+
+
@@ -71443,8 +70762,8 @@
-
-
+
+
@@ -71452,8 +70771,8 @@
-
-
+
+
@@ -71476,14 +70795,14 @@
-
-
+
+
-
-
+
+
@@ -71491,8 +70810,8 @@
-
-
+
+
@@ -71503,8 +70822,8 @@
-
-
+
+
@@ -71556,8 +70875,8 @@
-
-
+
+
@@ -72072,7 +71391,7 @@
-
+
@@ -72105,7 +71424,7 @@
-
+
@@ -72118,9 +71437,9 @@
-
+
-
+
@@ -72130,20 +71449,20 @@
-
+
-
+
-
+
-
+
@@ -72213,7 +71532,7 @@
-
+
@@ -72370,7 +71689,7 @@
-
+
@@ -72380,7 +71699,7 @@
-
+
@@ -72388,7 +71707,7 @@
-
+
@@ -72396,7 +71715,7 @@
-
+
@@ -72457,7 +71776,7 @@
-
+
@@ -72470,7 +71789,7 @@
-
+
@@ -72486,9 +71805,9 @@
-
+
-
+
@@ -72499,7 +71818,7 @@
-
+
@@ -72518,25 +71837,25 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -72574,7 +71893,7 @@
-
+
@@ -72582,7 +71901,7 @@
-
+
@@ -72620,7 +71939,7 @@
-
+
@@ -72634,7 +71953,7 @@
-
+
@@ -72645,7 +71964,7 @@
-
+
@@ -72665,7 +71984,7 @@
-
+
@@ -72673,7 +71992,7 @@
-
+
@@ -73002,7 +72321,7 @@
-
+
@@ -73466,7 +72785,7 @@
-
+
@@ -73666,7 +72985,7 @@
-
+
@@ -73819,7 +73138,7 @@
-
+
@@ -73866,7 +73185,7 @@
-
+
@@ -74070,12 +73389,12 @@
-
+
-
+
-
+
@@ -74085,13 +73404,13 @@
-
+
-
+
@@ -74264,7 +73583,7 @@
-
+
@@ -74718,7 +74037,7 @@
-
+
@@ -74762,32 +74081,32 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -74875,15 +74194,15 @@
-
+
-
+
-
+
@@ -74892,7 +74211,7 @@
-
+
@@ -74918,8 +74237,8 @@
-
-
+
+
@@ -74930,7 +74249,7 @@
-
+
@@ -75161,169 +74480,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -75331,13 +74489,13 @@
-
+
-
+
@@ -75348,18 +74506,18 @@
-
+
-
+
-
+
-
+
@@ -75543,10 +74701,10 @@
-
+
-
+
@@ -75616,13 +74774,13 @@
-
+
-
+
-
+
@@ -75631,10 +74789,10 @@
-
+
-
+
@@ -75642,7 +74800,7 @@
-
+
@@ -75650,7 +74808,7 @@
-
+
@@ -75659,7 +74817,7 @@
-
+
@@ -75855,10 +75013,10 @@
-
+
-
+
@@ -77666,23 +76824,23 @@
-
+
-
+
-
+
-
+
-
+
@@ -77690,7 +76848,7 @@
-
+
@@ -77698,7 +76856,7 @@
-
+
@@ -77712,7 +76870,7 @@
-
+
@@ -77723,7 +76881,7 @@
-
+
@@ -77731,7 +76889,7 @@
-
+
@@ -77739,7 +76897,7 @@
-
+
@@ -77747,7 +76905,7 @@
-
+
@@ -77758,7 +76916,7 @@
-
+
@@ -77766,7 +76924,7 @@
-
+
@@ -77774,7 +76932,7 @@
-
+
@@ -77785,7 +76943,7 @@
-
+
@@ -77799,7 +76957,7 @@
-
+
@@ -77819,7 +76977,7 @@
-
+
@@ -78288,7 +77446,7 @@
-
+
@@ -78418,7 +77576,7 @@
-
+
@@ -78426,7 +77584,7 @@
-
+
@@ -78658,23 +77816,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -79461,7 +78602,7 @@
-
+
@@ -79508,7 +78649,7 @@
-
+
@@ -79556,10 +78697,10 @@
-
+
-
+
@@ -79672,8 +78813,8 @@
-
-
+
+
@@ -79797,7 +78938,7 @@
-
+
@@ -79966,7 +79107,7 @@
-
+
@@ -80700,7 +79841,7 @@
-
+
@@ -80721,7 +79862,7 @@
-
+
@@ -81008,9 +80149,9 @@
-
+
-
+
@@ -81580,9 +80721,9 @@
-
+
-
+
@@ -81594,18 +80735,18 @@
-
+
-
+
-
+
-
+
@@ -81631,7 +80772,7 @@
-
+
@@ -82368,11 +81509,11 @@
-
+
-
+
-
+
@@ -82381,12 +81522,12 @@
-
+
-
+
@@ -82397,7 +81538,7 @@
-
+
@@ -82405,7 +81546,7 @@
-
+
@@ -82415,13 +81556,13 @@
-
+
-
+
@@ -82435,25 +81576,14 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
@@ -82483,15 +81613,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -82499,7 +81621,7 @@
-
+
@@ -82809,7 +81931,7 @@
-
+
@@ -82934,7 +82056,7 @@
-
+
@@ -82942,7 +82064,7 @@
-
+
@@ -83082,7 +82204,7 @@
-
+
@@ -83189,7 +82311,7 @@
-
+
@@ -83717,16 +82839,16 @@
-
-
+
+
-
-
+
+
@@ -83771,23 +82893,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -83873,7 +82978,7 @@
-
+
@@ -84258,10 +83363,10 @@
-
+
-
+
@@ -84289,7 +83394,7 @@
-
+
@@ -84327,7 +83432,7 @@
-
+
@@ -84348,7 +83453,7 @@
-
+
@@ -84372,7 +83477,7 @@
-
+
@@ -84380,167 +83485,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -84818,7 +83762,7 @@
-
+
@@ -84882,7 +83826,7 @@
-
+
@@ -85709,7 +84653,7 @@
-
+
@@ -85795,7 +84739,7 @@
-
+
@@ -85816,7 +84760,7 @@
-
+
@@ -86291,35 +85235,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -86502,7 +85429,7 @@
-
+
@@ -86625,7 +85552,7 @@
-
+
@@ -86670,7 +85597,7 @@
-
+
@@ -87661,16 +86588,16 @@
-
+
-
+
-
+
@@ -87678,7 +86605,7 @@
-
+
@@ -87769,21 +86696,21 @@
-
+
-
+
-
+
-
+
-
+
@@ -87797,7 +86724,7 @@
-
+
@@ -87817,184 +86744,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -88158,43 +86907,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -88344,23 +87058,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -88454,12 +87151,12 @@
-
+
-
+
@@ -88472,12 +87169,12 @@
-
+
-
+
-
+
@@ -88494,15 +87191,15 @@
-
+
-
+
-
+
@@ -88524,7 +87221,7 @@
-
+
@@ -88596,102 +87293,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -88709,17 +87310,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -88904,7 +87494,7 @@
-
+
@@ -89164,15 +87754,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -89180,26 +87762,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -89207,7 +87770,7 @@
-
+
@@ -89215,7 +87778,7 @@
-
+
@@ -89223,129 +87786,129 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -89595,15 +88158,15 @@
-
+
-
+
-
+
@@ -89743,7 +88306,7 @@
-
+
@@ -89774,7 +88337,7 @@
-
+
@@ -89815,61 +88378,46 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -89878,40 +88426,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
@@ -89919,22 +88457,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -90138,10 +88661,10 @@
-
+
-
+
@@ -90283,17 +88806,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -90370,11 +88882,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -90390,14 +88902,6 @@
-
-
-
-
-
-
-
-
@@ -90444,8 +88948,8 @@
-
-
+
+
@@ -90578,7 +89082,7 @@
-
+
@@ -90623,7 +89127,7 @@
-
+
@@ -90917,14 +89421,6 @@
-
-
-
-
-
-
-
-
@@ -90973,7 +89469,7 @@
-
+
@@ -91160,17 +89656,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -91265,34 +89750,15 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -91338,7 +89804,7 @@
-
+
@@ -91463,7 +89929,7 @@
-
+
@@ -91764,7 +90230,7 @@
-
+
@@ -92952,10 +91418,10 @@
-
+
-
+
@@ -92984,7 +91450,7 @@
-
+
@@ -93576,7 +92042,7 @@
-
+
@@ -94524,7 +92990,7 @@
-
+
@@ -94536,7 +93002,7 @@
-
+
@@ -96007,7 +94473,7 @@
-
+
@@ -96015,7 +94481,7 @@
-
+
@@ -96023,15 +94489,15 @@
-
+
-
+
-
+
@@ -96039,15 +94505,15 @@
-
+
-
+
-
+
@@ -96055,7 +94521,7 @@
-
+
@@ -96063,7 +94529,26 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -96077,7 +94562,7 @@
-
+
@@ -96085,7 +94570,7 @@
-
+
@@ -96096,7 +94581,7 @@
-
+
@@ -96107,7 +94592,7 @@
-
+
@@ -96115,7 +94600,7 @@
-
+
@@ -96123,52 +94608,52 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -96751,7 +95236,7 @@
-
+
@@ -96759,7 +95244,7 @@
-
+
@@ -96767,15 +95252,7 @@
-
-
-
-
-
-
-
-
-
+
@@ -96783,7 +95260,7 @@
-
+
@@ -96873,45 +95350,45 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -96925,12 +95402,12 @@
-
+
-
+
@@ -96941,7 +95418,7 @@
-
+
@@ -96955,7 +95432,7 @@
-
+
@@ -96969,12 +95446,7 @@
-
-
-
-
-
-
+
@@ -96988,87 +95460,73 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -97082,7 +95540,7 @@
-
+
@@ -97090,7 +95548,7 @@
-
+
@@ -97115,7 +95573,7 @@
-
+
@@ -97146,7 +95604,7 @@
-
+
@@ -97166,7 +95624,7 @@
-
+
@@ -97183,7 +95641,7 @@
-
+
@@ -97194,23 +95652,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -97218,7 +95660,7 @@
-
+
@@ -97226,7 +95668,7 @@
-
+
@@ -97234,7 +95676,7 @@
-
+
@@ -97248,7 +95690,7 @@
-
+
@@ -97256,7 +95698,7 @@
-
+
@@ -97267,7 +95709,7 @@
-
+
@@ -97292,7 +95734,7 @@
-
+
@@ -97494,80 +95936,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -97593,7 +95961,7 @@
-
+
@@ -97640,25 +96008,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -97978,23 +96327,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -98036,20 +96368,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -98071,10 +96389,10 @@
-
+
-
+
@@ -98082,25 +96400,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -98138,7 +96437,7 @@
-
+
@@ -98322,31 +96621,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -98357,7 +96656,7 @@
-
+
@@ -98368,7 +96667,7 @@
-
+
@@ -98385,7 +96684,7 @@
-
+
@@ -98402,7 +96701,7 @@
-
+
@@ -98411,24 +96710,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -98436,7 +96735,7 @@
-
+
@@ -98444,7 +96743,7 @@
-
+
@@ -98452,7 +96751,7 @@
-
+
@@ -98475,7 +96774,7 @@
-
+
@@ -98553,20 +96852,12 @@
-
+
-
-
-
-
-
-
-
-
@@ -98860,7 +97151,7 @@
-
+
@@ -99034,7 +97325,7 @@
-
+
@@ -99708,7 +97999,7 @@
-
+
@@ -99825,10 +98116,10 @@
-
+
-
+
@@ -99913,10 +98204,10 @@
-
+
-
+
@@ -99935,10 +98226,10 @@
-
+
-
+
@@ -101145,7 +99436,7 @@
-
+
@@ -102102,7 +100393,7 @@
-
+
@@ -102348,7 +100639,7 @@
-
+
@@ -102743,7 +101034,7 @@
-
+
@@ -102804,9 +101095,9 @@
-
+
-
+
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
index 622ee8f26c52..7768f28678a5 100644
--- a/android/abi_gki_aarch64_qcom
+++ b/android/abi_gki_aarch64_qcom
@@ -1326,6 +1326,8 @@
kvmalloc_node
kzfree
led_blink_set
+ led_classdev_flash_register_ext
+ led_classdev_flash_unregister
led_classdev_register_ext
led_classdev_unregister
led_get_default_pattern
diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc
index e5e7c37c46e0..a743719eb889 100644
--- a/android/abi_gki_aarch64_unisoc
+++ b/android/abi_gki_aarch64_unisoc
@@ -2487,3 +2487,13 @@
# required by sprd_sip_svc.ko
__arm_smccc_smc
+
+# required by mali_gondul.ko
+ bpf_trace_run5
+ ktime_get_raw
+ of_machine_is_compatible
+ _totalram_pages
+ trace_output_call
+ trace_print_array_seq
+ trace_print_flags_seq
+ vmf_insert_pfn_prot
diff --git a/android/abi_gki_aarch64_workarounds b/android/abi_gki_aarch64_workarounds
new file mode 100644
index 000000000000..3e4b6d16c687
--- /dev/null
+++ b/android/abi_gki_aarch64_workarounds
@@ -0,0 +1,3 @@
+[abi_whitelist]
+ # b/167230325
+ ehci_handshake
diff --git a/arch/arm64/configs/vendor/lahaina_GKI.config b/arch/arm64/configs/vendor/lahaina_GKI.config
index 6d0b919b61ce..898735f6425d 100644
--- a/arch/arm64/configs/vendor/lahaina_GKI.config
+++ b/arch/arm64/configs/vendor/lahaina_GKI.config
@@ -136,10 +136,8 @@ CONFIG_QCOM_LAZY_MAPPING=m
CONFIG_MFD_SPMI_PMIC=m
CONFIG_PWM_QTI_LPG=m
CONFIG_INTERCONNECT_QCOM_EPSS_L3=m
-CONFIG_LEDS_CLASS_FLASH=m
CONFIG_LEDS_QTI_FLASH=m
CONFIG_LEDS_QTI_TRI_LED=m
-CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_MSM_SPCOM=m
CONFIG_MSM_ADSPRPC=m
CONFIG_MSM_RDBG=m
diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
index 915bb1639763..14863ad89f81 100644
--- a/arch/x86/power/cpu.c
+++ b/arch/x86/power/cpu.c
@@ -268,6 +268,19 @@ static void notrace __restore_processor_state(struct saved_context *ctxt)
/* Needed by apm.c */
void notrace restore_processor_state(void)
{
+#ifdef __clang__
+ // The following code snippet is copied from __restore_processor_state.
+ // Its purpose is to prepare GS segment before the function is called.
+ // Since the function is compiled with SCS on, it will use GS at its
+ // entry.
+ // TODO: Hack to be removed later when compiler bug is fixed.
+#ifdef CONFIG_X86_64
+ wrmsrl(MSR_GS_BASE, saved_context.kernelmode_gs_base);
+#else
+ loadsegment(fs, __KERNEL_PERCPU);
+ loadsegment(gs, __KERNEL_STACK_CANARY);
+#endif
+#endif
__restore_processor_state(&saved_context);
}
#ifdef CONFIG_X86_32
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
index d80fb6a2ddbf..3a875c99c702 100644
--- a/build.config.gki.aarch64
+++ b/build.config.gki.aarch64
@@ -17,6 +17,7 @@ android/abi_gki_aarch64_qcom
android/abi_gki_aarch64_sunxi
android/abi_gki_aarch64_unisoc
android/abi_gki_aarch64_vivo
+android/abi_gki_aarch64_workarounds
"
TRIM_NONLISTED_KMI=1
KMI_SYMBOL_LIST_ADD_ONLY=1
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index a1985d161856..7a141e148f3f 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -3318,7 +3318,7 @@ static void binder_transaction(struct binder_proc *proc,
t->buffer = binder_alloc_new_buf(&target_proc->alloc, tr->data_size,
tr->offsets_size, extra_buffers_size,
- !reply && (t->flags & TF_ONE_WAY));
+ !reply && (t->flags & TF_ONE_WAY), current->tgid);
if (IS_ERR(t->buffer)) {
/*
* -ESRCH indicates VMA cleared. The target is dying.
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index 2048ba6c8b08..f637998e3f69 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -339,12 +339,50 @@ static inline struct vm_area_struct *binder_alloc_get_vma(
return vma;
}
+static void debug_low_async_space_locked(struct binder_alloc *alloc, int pid)
+{
+ /*
+ * Find the amount and size of buffers allocated by the current caller;
+ * The idea is that once we cross the threshold, whoever is responsible
+ * for the low async space is likely to try to send another async txn,
+ * and at some point we'll catch them in the act. This is more efficient
+ * than keeping a map per pid.
+ */
+ struct rb_node *n = alloc->free_buffers.rb_node;
+ struct binder_buffer *buffer;
+ size_t total_alloc_size = 0;
+ size_t num_buffers = 0;
+
+ for (n = rb_first(&alloc->allocated_buffers); n != NULL;
+ n = rb_next(n)) {
+ buffer = rb_entry(n, struct binder_buffer, rb_node);
+ if (buffer->pid != pid)
+ continue;
+ if (!buffer->async_transaction)
+ continue;
+ total_alloc_size += binder_alloc_buffer_size(alloc, buffer)
+ + sizeof(struct binder_buffer);
+ num_buffers++;
+ }
+
+ /*
+ * Warn if this pid has more than 50 transactions, or more than 50% of
+ * async space (which is 25% of total buffer size).
+ */
+ if (num_buffers > 50 || total_alloc_size > alloc->buffer_size / 4) {
+ binder_alloc_debug(BINDER_DEBUG_USER_ERROR,
+ "%d: pid %d spamming oneway? %zd buffers allocated for a total size of %zd\n",
+ alloc->pid, pid, num_buffers, total_alloc_size);
+ }
+}
+
static struct binder_buffer *binder_alloc_new_buf_locked(
struct binder_alloc *alloc,
size_t data_size,
size_t offsets_size,
size_t extra_buffers_size,
- int is_async)
+ int is_async,
+ int pid)
{
struct rb_node *n = alloc->free_buffers.rb_node;
struct binder_buffer *buffer;
@@ -487,11 +525,20 @@ static struct binder_buffer *binder_alloc_new_buf_locked(
buffer->offsets_size = offsets_size;
buffer->async_transaction = is_async;
buffer->extra_buffers_size = extra_buffers_size;
+ buffer->pid = pid;
if (is_async) {
alloc->free_async_space -= size + sizeof(struct binder_buffer);
binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC_ASYNC,
"%d: binder_alloc_buf size %zd async free %zd\n",
alloc->pid, size, alloc->free_async_space);
+ if (alloc->free_async_space < alloc->buffer_size / 10) {
+ /*
+ * Start detecting spammers once we have less than 20%
+ * of async space left (which is less than 10% of total
+ * buffer size).
+ */
+ debug_low_async_space_locked(alloc, pid);
+ }
}
return buffer;
@@ -509,6 +556,7 @@ err_alloc_buf_struct_failed:
* @offsets_size: user specified buffer offset
* @extra_buffers_size: size of extra space for meta-data (eg, security context)
* @is_async: buffer for async transaction
+ * @pid: pid to attribute allocation to (used for debugging)
*
* Allocate a new buffer given the requested sizes. Returns
* the kernel version of the buffer pointer. The size allocated
@@ -521,13 +569,14 @@ struct binder_buffer *binder_alloc_new_buf(struct binder_alloc *alloc,
size_t data_size,
size_t offsets_size,
size_t extra_buffers_size,
- int is_async)
+ int is_async,
+ int pid)
{
struct binder_buffer *buffer;
mutex_lock(&alloc->mutex);
buffer = binder_alloc_new_buf_locked(alloc, data_size, offsets_size,
- extra_buffers_size, is_async);
+ extra_buffers_size, is_async, pid);
mutex_unlock(&alloc->mutex);
return buffer;
}
diff --git a/drivers/android/binder_alloc.h b/drivers/android/binder_alloc.h
index db9c1b984695..55d8b4106766 100644
--- a/drivers/android/binder_alloc.h
+++ b/drivers/android/binder_alloc.h
@@ -32,6 +32,7 @@ struct binder_transaction;
* @offsets_size: size of array of offsets
* @extra_buffers_size: size of space for other objects (like sg lists)
* @user_data: user pointer to base of buffer space
+ * @pid: pid to attribute the buffer to (caller)
*
* Bookkeeping structure for binder transaction buffers
*/
@@ -51,6 +52,7 @@ struct binder_buffer {
size_t offsets_size;
size_t extra_buffers_size;
void __user *user_data;
+ int pid;
};
/**
@@ -117,7 +119,8 @@ extern struct binder_buffer *binder_alloc_new_buf(struct binder_alloc *alloc,
size_t data_size,
size_t offsets_size,
size_t extra_buffers_size,
- int is_async);
+ int is_async,
+ int pid);
extern void binder_alloc_init(struct binder_alloc *alloc);
extern int binder_alloc_shrinker_init(void);
extern void binder_alloc_vma_close(struct binder_alloc *alloc);
diff --git a/drivers/android/binder_alloc_selftest.c b/drivers/android/binder_alloc_selftest.c
index 4151d9938255..c2b323bc3b3a 100644
--- a/drivers/android/binder_alloc_selftest.c
+++ b/drivers/android/binder_alloc_selftest.c
@@ -119,7 +119,7 @@ static void binder_selftest_alloc_buf(struct binder_alloc *alloc,
int i;
for (i = 0; i < BUFFER_NUM; i++) {
- buffers[i] = binder_alloc_new_buf(alloc, sizes[i], 0, 0, 0);
+ buffers[i] = binder_alloc_new_buf(alloc, sizes[i], 0, 0, 0, 0);
if (IS_ERR(buffers[i]) ||
!check_buffer_pages_allocated(alloc, buffers[i],
sizes[i])) {
diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
index 7b4b1abbb537..2ed3b8b2bccf 100644
--- a/drivers/android/vendor_hooks.c
+++ b/drivers/android/vendor_hooks.c
@@ -55,3 +55,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipi_stop);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_store);
diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h
index 4b19c544c59a..34d050bb1ae6 100644
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
@@ -53,8 +53,9 @@ enum {
NETIF_F_GSO_ESP_BIT, /* ... ESP with TSO */
NETIF_F_GSO_UDP_BIT, /* ... UFO, deprecated except tuntap */
NETIF_F_GSO_UDP_L4_BIT, /* ... UDP payload GSO (not UFO) */
+ NETIF_F_GSO_FRAGLIST_BIT, /* ... Fraglist GSO */
/**/NETIF_F_GSO_LAST = /* last bit, see GSO_MASK */
- NETIF_F_GSO_UDP_L4_BIT,
+ NETIF_F_GSO_FRAGLIST_BIT,
NETIF_F_FCOE_CRC_BIT, /* FCoE CRC32 */
NETIF_F_SCTP_CRC_BIT, /* SCTP checksum offload */
@@ -80,6 +81,7 @@ enum {
NETIF_F_GRO_HW_BIT, /* Hardware Generic receive offload */
NETIF_F_HW_TLS_RECORD_BIT, /* Offload TLS record */
+ NETIF_F_GRO_FRAGLIST_BIT, /* Fraglist GRO */
/*
* Add your fresh new feature above and remember to update
@@ -150,6 +152,8 @@ enum {
#define NETIF_F_GSO_UDP_L4 __NETIF_F(GSO_UDP_L4)
#define NETIF_F_HW_TLS_TX __NETIF_F(HW_TLS_TX)
#define NETIF_F_HW_TLS_RX __NETIF_F(HW_TLS_RX)
+#define NETIF_F_GRO_FRAGLIST __NETIF_F(GRO_FRAGLIST)
+#define NETIF_F_GSO_FRAGLIST __NETIF_F(GSO_FRAGLIST)
/* Finds the next feature with the highest number of the range of start till 0.
*/
@@ -226,6 +230,9 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start)
/* changeable features with no special hardware requirements */
#define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO)
+/* Changeable features with no special hardware requirements that defaults to off. */
+#define NETIF_F_SOFT_FEATURES_OFF NETIF_F_GRO_FRAGLIST
+
#define NETIF_F_VLAN_FEATURES (NETIF_F_HW_VLAN_CTAG_FILTER | \
NETIF_F_HW_VLAN_CTAG_RX | \
NETIF_F_HW_VLAN_CTAG_TX | \
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 9c7d93783759..97c1c5d54d0a 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2350,7 +2350,8 @@ struct napi_gro_cb {
/* Number of gro_receive callbacks this packet already went through */
u8 recursion_counter:4;
- /* 1 bit hole */
+ /* GRO is done by frag_list pointer chaining. */
+ u8 is_flist:1;
/* used to support CHECKSUM_COMPLETE for tunneling protocols */
__wsum csum;
@@ -2705,6 +2706,7 @@ struct net_device *dev_get_by_napi_id(unsigned int napi_id);
int netdev_get_name(struct net *net, char *name, int ifindex);
int dev_restart(struct net_device *dev);
int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb);
+int skb_gro_receive_list(struct sk_buff *p, struct sk_buff *skb);
static inline unsigned int skb_gro_offset(const struct sk_buff *skb)
{
@@ -4572,6 +4574,7 @@ static inline bool net_gso_ok(netdev_features_t features, int gso_type)
BUILD_BUG_ON(SKB_GSO_ESP != (NETIF_F_GSO_ESP >> NETIF_F_GSO_SHIFT));
BUILD_BUG_ON(SKB_GSO_UDP != (NETIF_F_GSO_UDP >> NETIF_F_GSO_SHIFT));
BUILD_BUG_ON(SKB_GSO_UDP_L4 != (NETIF_F_GSO_UDP_L4 >> NETIF_F_GSO_SHIFT));
+ BUILD_BUG_ON(SKB_GSO_FRAGLIST != (NETIF_F_GSO_FRAGLIST >> NETIF_F_GSO_SHIFT));
return (features & feature) == feature;
}
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 542d881978ef..89301656f985 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -593,6 +593,8 @@ enum {
SKB_GSO_UDP = 1 << 16,
SKB_GSO_UDP_L4 = 1 << 17,
+
+ SKB_GSO_FRAGLIST = 1 << 18,
};
#if BITS_PER_LONG > 32
@@ -3529,6 +3531,8 @@ void skb_scrub_packet(struct sk_buff *skb, bool xnet);
bool skb_gso_validate_network_len(const struct sk_buff *skb, unsigned int mtu);
bool skb_gso_validate_mac_len(const struct sk_buff *skb, unsigned int len);
struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features);
+struct sk_buff *skb_segment_list(struct sk_buff *skb, netdev_features_t features,
+ unsigned int offset);
struct sk_buff *skb_vlan_untag(struct sk_buff *skb);
int skb_ensure_writable(struct sk_buff *skb, int write_len);
int __skb_vlan_pop(struct sk_buff *skb, u16 *vlan_tci);
diff --git a/include/net/udp.h b/include/net/udp.h
index fabf507bce5d..e55d5f765807 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -167,7 +167,7 @@ typedef struct sock *(*udp_lookup_t)(struct sk_buff *skb, __be16 sport,
__be16 dport);
struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb,
- struct udphdr *uh, udp_lookup_t lookup);
+ struct udphdr *uh, struct sock *sk);
int udp_gro_complete(struct sk_buff *skb, int nhoff, udp_lookup_t lookup);
struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb,
diff --git a/include/trace/hooks/debug.h b/include/trace/hooks/debug.h
index d3e310ec4b2d..392525e806d4 100644
--- a/include/trace/hooks/debug.h
+++ b/include/trace/hooks/debug.h
@@ -11,12 +11,17 @@
#include
#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
-
+struct pt_regs;
DECLARE_HOOK(android_vh_ipi_stop,
TP_PROTO(struct pt_regs *regs),
TP_ARGS(regs))
+
+DECLARE_HOOK(android_vh_printk_store,
+ TP_PROTO(int facility, int level),
+ TP_ARGS(facility, level))
#else
#define trace_android_vh_ipi_stop(regs)
+#define trace_android_vh_printk_store(facility, level)
#endif
#endif /* _TRACE_HOOK_DEBUG_H */
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 9a439f5fa1ea..109d7010790a 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -55,6 +55,8 @@
#include
#define CREATE_TRACE_POINTS
#include
+#undef CREATE_TRACE_POINTS
+#include
#include "console_cmdline.h"
#include "braille.h"
@@ -2051,6 +2053,7 @@ asmlinkage int vprintk_emit(int facility, int level,
pending_output = (curr_log_seq != log_next_seq);
logbuf_unlock_irqrestore(flags);
+ trace_android_vh_printk_store(facility, level);
/* If called from the scheduler, we can not call up(). */
if (!in_sched && pending_output) {
/*
diff --git a/net/core/dev.c b/net/core/dev.c
index 782c28482b2a..bfb7bf0f2847 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3032,7 +3032,7 @@ struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
segs = skb_mac_gso_segment(skb, features);
- if (unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs)))
+ if (segs != skb && unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs)))
skb_warn_bad_offload(skb);
return segs;
@@ -9042,7 +9042,7 @@ int register_netdevice(struct net_device *dev)
/* Transfer changeable features to wanted_features and enable
* software offloads (GSO and GRO).
*/
- dev->hw_features |= NETIF_F_SOFT_FEATURES;
+ dev->hw_features |= (NETIF_F_SOFT_FEATURES | NETIF_F_SOFT_FEATURES_OFF);
dev->features |= NETIF_F_SOFT_FEATURES;
if (dev->netdev_ops->ndo_udp_tunnel_add) {
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 126be82a84f7..e53fe52dd764 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3640,6 +3640,97 @@ static inline skb_frag_t skb_head_frag_to_page_desc(struct sk_buff *frag_skb)
return head_frag;
}
+struct sk_buff *skb_segment_list(struct sk_buff *skb,
+ netdev_features_t features,
+ unsigned int offset)
+{
+ struct sk_buff *list_skb = skb_shinfo(skb)->frag_list;
+ unsigned int tnl_hlen = skb_tnl_header_len(skb);
+ unsigned int delta_truesize = 0;
+ unsigned int delta_len = 0;
+ struct sk_buff *tail = NULL;
+ struct sk_buff *nskb;
+
+ skb_push(skb, -skb_network_offset(skb) + offset);
+
+ skb_shinfo(skb)->frag_list = NULL;
+
+ do {
+ nskb = list_skb;
+ list_skb = list_skb->next;
+
+ if (!tail)
+ skb->next = nskb;
+ else
+ tail->next = nskb;
+
+ tail = nskb;
+
+ delta_len += nskb->len;
+ delta_truesize += nskb->truesize;
+
+ skb_push(nskb, -skb_network_offset(nskb) + offset);
+
+ __copy_skb_header(nskb, skb);
+
+ skb_headers_offset_update(nskb, skb_headroom(nskb) - skb_headroom(skb));
+ skb_copy_from_linear_data_offset(skb, -tnl_hlen,
+ nskb->data - tnl_hlen,
+ offset + tnl_hlen);
+
+ if (skb_needs_linearize(nskb, features) &&
+ __skb_linearize(nskb))
+ goto err_linearize;
+
+ } while (list_skb);
+
+ skb->truesize = skb->truesize - delta_truesize;
+ skb->data_len = skb->data_len - delta_len;
+ skb->len = skb->len - delta_len;
+
+ skb_gso_reset(skb);
+
+ skb->prev = tail;
+
+ if (skb_needs_linearize(skb, features) &&
+ __skb_linearize(skb))
+ goto err_linearize;
+
+ skb_get(skb);
+
+ return skb;
+
+err_linearize:
+ kfree_skb_list(skb->next);
+ skb->next = NULL;
+ return ERR_PTR(-ENOMEM);
+}
+EXPORT_SYMBOL_GPL(skb_segment_list);
+
+int skb_gro_receive_list(struct sk_buff *p, struct sk_buff *skb)
+{
+ if (unlikely(p->len + skb->len >= 65536))
+ return -E2BIG;
+
+ if (NAPI_GRO_CB(p)->last == p)
+ skb_shinfo(p)->frag_list = skb;
+ else
+ NAPI_GRO_CB(p)->last->next = skb;
+
+ skb_pull(skb, skb_gro_offset(skb));
+
+ NAPI_GRO_CB(p)->last = skb;
+ NAPI_GRO_CB(p)->count++;
+ p->data_len += skb->len;
+ p->truesize += skb->truesize;
+ p->len += skb->len;
+
+ NAPI_GRO_CB(skb)->same_flow = 1;
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(skb_gro_receive_list);
+
/**
* skb_segment - Perform protocol segmentation on skb.
* @head_skb: buffer to segment
diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c
index a3908e55ed89..9455b0a0776b 100644
--- a/net/ipv4/udp_offload.c
+++ b/net/ipv4/udp_offload.c
@@ -184,6 +184,20 @@ out_unlock:
}
EXPORT_SYMBOL(skb_udp_tunnel_segment);
+static struct sk_buff *__udp_gso_segment_list(struct sk_buff *skb,
+ netdev_features_t features)
+{
+ unsigned int mss = skb_shinfo(skb)->gso_size;
+
+ skb = skb_segment_list(skb, features, skb_mac_header_len(skb));
+ if (IS_ERR(skb))
+ return skb;
+
+ udp_hdr(skb)->len = htons(sizeof(struct udphdr) + mss);
+
+ return skb;
+}
+
struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb,
netdev_features_t features)
{
@@ -196,6 +210,9 @@ struct sk_buff *__udp_gso_segment(struct sk_buff *gso_skb,
__sum16 check;
__be16 newlen;
+ if (skb_shinfo(gso_skb)->gso_type & SKB_GSO_FRAGLIST)
+ return __udp_gso_segment_list(gso_skb, features);
+
mss = skb_shinfo(gso_skb)->gso_size;
if (gso_skb->len <= sizeof(*uh) + mss)
return ERR_PTR(-EINVAL);
@@ -354,6 +371,7 @@ static struct sk_buff *udp_gro_receive_segment(struct list_head *head,
struct udphdr *uh2;
struct sk_buff *p;
unsigned int ulen;
+ int ret = 0;
/* requires non zero csum, for symmetry with GSO */
if (!uh->check) {
@@ -369,7 +387,6 @@ static struct sk_buff *udp_gro_receive_segment(struct list_head *head,
}
/* pull encapsulating udp header */
skb_gro_pull(skb, sizeof(struct udphdr));
- skb_gro_postpull_rcsum(skb, uh, sizeof(struct udphdr));
list_for_each_entry(p, head, list) {
if (!NAPI_GRO_CB(p)->same_flow)
@@ -383,14 +400,40 @@ static struct sk_buff *udp_gro_receive_segment(struct list_head *head,
continue;
}
+ if (NAPI_GRO_CB(skb)->is_flist != NAPI_GRO_CB(p)->is_flist) {
+ NAPI_GRO_CB(skb)->flush = 1;
+ return p;
+ }
+
/* Terminate the flow on len mismatch or if it grow "too much".
* Under small packet flood GRO count could elsewhere grow a lot
* leading to excessive truesize values.
* On len mismatch merge the first packet shorter than gso_size,
* otherwise complete the GRO packet.
*/
- if (ulen > ntohs(uh2->len) || skb_gro_receive(p, skb) ||
- ulen != ntohs(uh2->len) ||
+ if (ulen > ntohs(uh2->len)) {
+ pp = p;
+ } else {
+ if (NAPI_GRO_CB(skb)->is_flist) {
+ if (!pskb_may_pull(skb, skb_gro_offset(skb))) {
+ NAPI_GRO_CB(skb)->flush = 1;
+ return NULL;
+ }
+ if ((skb->ip_summed != p->ip_summed) ||
+ (skb->csum_level != p->csum_level)) {
+ NAPI_GRO_CB(skb)->flush = 1;
+ return NULL;
+ }
+ ret = skb_gro_receive_list(p, skb);
+ } else {
+ skb_gro_postpull_rcsum(skb, uh,
+ sizeof(struct udphdr));
+
+ ret = skb_gro_receive(p, skb);
+ }
+ }
+
+ if (ret || ulen != ntohs(uh2->len) ||
NAPI_GRO_CB(p)->count >= UDP_GRO_CNT_MAX)
pp = p;
@@ -401,36 +444,30 @@ static struct sk_buff *udp_gro_receive_segment(struct list_head *head,
return NULL;
}
-INDIRECT_CALLABLE_DECLARE(struct sock *udp6_lib_lookup_skb(struct sk_buff *skb,
- __be16 sport, __be16 dport));
struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb,
- struct udphdr *uh, udp_lookup_t lookup)
+ struct udphdr *uh, struct sock *sk)
{
struct sk_buff *pp = NULL;
struct sk_buff *p;
struct udphdr *uh2;
unsigned int off = skb_gro_offset(skb);
int flush = 1;
- struct sock *sk;
- rcu_read_lock();
- sk = INDIRECT_CALL_INET(lookup, udp6_lib_lookup_skb,
- udp4_lib_lookup_skb, skb, uh->source, uh->dest);
- if (!sk)
- goto out_unlock;
+ NAPI_GRO_CB(skb)->is_flist = 0;
+ if (skb->dev->features & NETIF_F_GRO_FRAGLIST)
+ NAPI_GRO_CB(skb)->is_flist = sk ? !udp_sk(sk)->gro_enabled: 1;
- if (udp_sk(sk)->gro_enabled) {
+ if ((sk && udp_sk(sk)->gro_enabled) || NAPI_GRO_CB(skb)->is_flist) {
pp = call_gro_receive(udp_gro_receive_segment, head, skb);
- rcu_read_unlock();
return pp;
}
- if (NAPI_GRO_CB(skb)->encap_mark ||
+ if (!sk || NAPI_GRO_CB(skb)->encap_mark ||
(skb->ip_summed != CHECKSUM_PARTIAL &&
NAPI_GRO_CB(skb)->csum_cnt == 0 &&
!NAPI_GRO_CB(skb)->csum_valid) ||
!udp_sk(sk)->gro_receive)
- goto out_unlock;
+ goto out;
/* mark that this skb passed once through the tunnel gro layer */
NAPI_GRO_CB(skb)->encap_mark = 1;
@@ -457,8 +494,7 @@ struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb,
skb_gro_postpull_rcsum(skb, uh, sizeof(struct udphdr));
pp = call_gro_receive_sk(udp_sk(sk)->gro_receive, sk, head, skb);
-out_unlock:
- rcu_read_unlock();
+out:
skb_gro_flush_final(skb, pp, flush);
return pp;
}
@@ -468,8 +504,10 @@ INDIRECT_CALLABLE_SCOPE
struct sk_buff *udp4_gro_receive(struct list_head *head, struct sk_buff *skb)
{
struct udphdr *uh = udp_gro_udphdr(skb);
+ struct sk_buff *pp;
+ struct sock *sk;
- if (unlikely(!uh) || !static_branch_unlikely(&udp_encap_needed_key))
+ if (unlikely(!uh))
goto flush;
/* Don't bother verifying checksum if we're going to flush anyway. */
@@ -484,7 +522,11 @@ struct sk_buff *udp4_gro_receive(struct list_head *head, struct sk_buff *skb)
inet_gro_compute_pseudo);
skip:
NAPI_GRO_CB(skb)->is_ipv6 = 0;
- return udp_gro_receive(head, skb, uh, udp4_lib_lookup_skb);
+ rcu_read_lock();
+ sk = static_branch_unlikely(&udp_encap_needed_key) ? udp4_lib_lookup_skb(skb, uh->source, uh->dest) : NULL;
+ pp = udp_gro_receive(head, skb, uh, sk);
+ rcu_read_unlock();
+ return pp;
flush:
NAPI_GRO_CB(skb)->flush = 1;
@@ -517,9 +559,7 @@ int udp_gro_complete(struct sk_buff *skb, int nhoff,
rcu_read_lock();
sk = INDIRECT_CALL_INET(lookup, udp6_lib_lookup_skb,
udp4_lib_lookup_skb, skb, uh->source, uh->dest);
- if (sk && udp_sk(sk)->gro_enabled) {
- err = udp_gro_complete_segment(skb);
- } else if (sk && udp_sk(sk)->gro_complete) {
+ if (sk && udp_sk(sk)->gro_complete) {
skb_shinfo(skb)->gso_type = uh->check ? SKB_GSO_UDP_TUNNEL_CSUM
: SKB_GSO_UDP_TUNNEL;
@@ -529,6 +569,8 @@ int udp_gro_complete(struct sk_buff *skb, int nhoff,
skb->encapsulation = 1;
err = udp_sk(sk)->gro_complete(sk, skb,
nhoff + sizeof(struct udphdr));
+ } else {
+ err = udp_gro_complete_segment(skb);
}
rcu_read_unlock();
@@ -544,6 +586,23 @@ INDIRECT_CALLABLE_SCOPE int udp4_gro_complete(struct sk_buff *skb, int nhoff)
const struct iphdr *iph = ip_hdr(skb);
struct udphdr *uh = (struct udphdr *)(skb->data + nhoff);
+ if (NAPI_GRO_CB(skb)->is_flist) {
+ uh->len = htons(skb->len - nhoff);
+
+ skb_shinfo(skb)->gso_type |= (SKB_GSO_FRAGLIST|SKB_GSO_UDP_L4);
+ skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
+
+ if (skb->ip_summed == CHECKSUM_UNNECESSARY) {
+ if (skb->csum_level < SKB_MAX_CSUM_LEVEL)
+ skb->csum_level++;
+ } else {
+ skb->ip_summed = CHECKSUM_UNNECESSARY;
+ skb->csum_level = 0;
+ }
+
+ return 0;
+ }
+
if (uh->check)
uh->check = ~udp_v4_check(skb->len - nhoff, iph->saddr,
iph->daddr, 0);
diff --git a/net/ipv6/udp_offload.c b/net/ipv6/udp_offload.c
index 64b8f05d6735..7a46bd33fa2f 100644
--- a/net/ipv6/udp_offload.c
+++ b/net/ipv6/udp_offload.c
@@ -115,8 +115,10 @@ INDIRECT_CALLABLE_SCOPE
struct sk_buff *udp6_gro_receive(struct list_head *head, struct sk_buff *skb)
{
struct udphdr *uh = udp_gro_udphdr(skb);
+ struct sk_buff *pp;
+ struct sock *sk;
- if (unlikely(!uh) || !static_branch_unlikely(&udpv6_encap_needed_key))
+ if (unlikely(!uh))
goto flush;
/* Don't bother verifying checksum if we're going to flush anyway. */
@@ -132,7 +134,11 @@ struct sk_buff *udp6_gro_receive(struct list_head *head, struct sk_buff *skb)
skip:
NAPI_GRO_CB(skb)->is_ipv6 = 1;
- return udp_gro_receive(head, skb, uh, udp6_lib_lookup_skb);
+ rcu_read_lock();
+ sk = static_branch_unlikely(&udpv6_encap_needed_key) ? udp6_lib_lookup_skb(skb, uh->source, uh->dest) : NULL;
+ pp = udp_gro_receive(head, skb, uh, sk);
+ rcu_read_unlock();
+ return pp;
flush:
NAPI_GRO_CB(skb)->flush = 1;
@@ -144,6 +150,23 @@ INDIRECT_CALLABLE_SCOPE int udp6_gro_complete(struct sk_buff *skb, int nhoff)
const struct ipv6hdr *ipv6h = ipv6_hdr(skb);
struct udphdr *uh = (struct udphdr *)(skb->data + nhoff);
+ if (NAPI_GRO_CB(skb)->is_flist) {
+ uh->len = htons(skb->len - nhoff);
+
+ skb_shinfo(skb)->gso_type |= (SKB_GSO_FRAGLIST|SKB_GSO_UDP_L4);
+ skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
+
+ if (skb->ip_summed == CHECKSUM_UNNECESSARY) {
+ if (skb->csum_level < SKB_MAX_CSUM_LEVEL)
+ skb->csum_level++;
+ } else {
+ skb->ip_summed = CHECKSUM_UNNECESSARY;
+ skb->csum_level = 0;
+ }
+
+ return 0;
+ }
+
if (uh->check)
uh->check = ~udp_v6_check(skb->len - nhoff, &ipv6h->saddr,
&ipv6h->daddr, 0);