Title: [281633] trunk/Tools
Revision
281633
Author
[email protected]
Date
2021-08-26 10:49:12 -0700 (Thu, 26 Aug 2021)

Log Message

TestWebKitAPI._WKActivatedElementInfo.InfoForRotatedImage is failing on iOS 15
https://bugs.webkit.org/show_bug.cgi?id=229531
rdar://82100466

Reviewed by Said Abou-Hallawa.

Due to changes in underlying system frameworks in iOS 15, the red "corner" of the rotated image in this test now
ends up with a color of 0xFFF51800 instead of 0xFFF51900. Resolve this by refactoring the test so that it's
robust against these kinds of minute differences.

To achieve this, we first run the test over a version of the test image without EXIF rotation data (test.jpg) to
measure the expected values of the red, green, yellow and blue corners; we then verify that these color values
are present in the corresponding rotated corners of the image with EXIF rotation.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/img-with-rotated-image.html: Removed.
* TestWebKitAPI/Tests/WebKitCocoa/test.jpg: Added.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Tools/ChangeLog (281632 => 281633)


--- trunk/Tools/ChangeLog	2021-08-26 17:04:05 UTC (rev 281632)
+++ trunk/Tools/ChangeLog	2021-08-26 17:49:12 UTC (rev 281633)
@@ -1,3 +1,25 @@
+2021-08-26  Wenson Hsieh  <[email protected]>
+
+        TestWebKitAPI._WKActivatedElementInfo.InfoForRotatedImage is failing on iOS 15
+        https://bugs.webkit.org/show_bug.cgi?id=229531
+        rdar://82100466
+
+        Reviewed by Said Abou-Hallawa.
+
+        Due to changes in underlying system frameworks in iOS 15, the red "corner" of the rotated image in this test now
+        ends up with a color of 0xFFF51800 instead of 0xFFF51900. Resolve this by refactoring the test so that it's
+        robust against these kinds of minute differences.
+
+        To achieve this, we first run the test over a version of the test image without EXIF rotation data (test.jpg) to
+        measure the expected values of the red, green, yellow and blue corners; we then verify that these color values
+        are present in the corresponding rotated corners of the image with EXIF rotation.
+
+        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+        * TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm:
+        (TestWebKitAPI::TEST):
+        * TestWebKitAPI/Tests/WebKitCocoa/img-with-rotated-image.html: Removed.
+        * TestWebKitAPI/Tests/WebKitCocoa/test.jpg: Added.
+
 2021-08-26  Chris Dumez  <[email protected]>
 
         REGRESSION (r281516): [AppleSilicon WK2] fast/loader/reload-zero-byte-plugin.html is timing out

Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (281632 => 281633)


--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2021-08-26 17:04:05 UTC (rev 281632)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2021-08-26 17:49:12 UTC (rev 281633)
@@ -559,7 +559,6 @@
 		71E88C4124B5299C00665160 /* ShareSheetTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 71E88C4024B5299C00665160 /* ShareSheetTests.mm */; };
 		71E88C4524B534B700665160 /* img-with-base64-url.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 71E88C4324B533EC00665160 /* img-with-base64-url.html */; };
 		725C3EF322058A5B007C36FC /* AdditionalSupportedImageTypes.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 725C3EF2220584BA007C36FC /* AdditionalSupportedImageTypes.html */; };
-		7283A9D022FA754900B21C7D /* img-with-rotated-image.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 7283A9CE22FA6BBE00B21C7D /* img-with-rotated-image.html */; };
 		7283A9D222FB1E0600B21C7D /* exif-orientation-8-llo.jpg in Copy Resources */ = {isa = PBXBuildFile; fileRef = 7283A9D122FB1D9700B21C7D /* exif-orientation-8-llo.jpg */; };
 		73BD731823A846500020F450 /* DisplayName.mm in Sources */ = {isa = PBXBuildFile; fileRef = 73BD731723A846500020F450 /* DisplayName.mm */; };
 		751B05D61F8EAC410028A09E /* DatabaseTrackerTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 751B05D51F8EAC1A0028A09E /* DatabaseTrackerTest.mm */; };
@@ -1238,6 +1237,7 @@
 		F46A095A1ED8A6E600D4AA55 /* apple.gif in Copy Resources */ = {isa = PBXBuildFile; fileRef = F47D30EB1ED28619000482E1 /* apple.gif */; };
 		F46A095B1ED8A6E600D4AA55 /* gif-and-file-input.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F47D30ED1ED28A6C000482E1 /* gif-and-file-input.html */; };
 		F46BD56924870643008282D6 /* dragstart-data.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F46BD5682487062D008282D6 /* dragstart-data.html */; };
+		F46D43AB26D7092800969E5E /* test.jpg in Copy Resources */ = {isa = PBXBuildFile; fileRef = F46D43AA26D7090300969E5E /* test.jpg */; };
 		F47728991E4AE3C1007ABF6A /* full-page-contenteditable.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F47728981E4AE3AD007ABF6A /* full-page-contenteditable.html */; };
 		F47DFB2621A878DF00021FB6 /* data-detectors.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F47DFB2421A8704A00021FB6 /* data-detectors.html */; };
 		F4811E5921940BDE00A5E0FD /* WKWebViewEditActions.mm in Sources */ = {isa = PBXBuildFile; fileRef = F4811E5821940B4400A5E0FD /* WKWebViewEditActions.mm */; };
@@ -1541,7 +1541,6 @@
 				F45B63FB1F197F4A009D38B9 /* image-map.html in Copy Resources */,
 				3128A8152376413300D90D40 /* image.html in Copy Resources */,
 				71E88C4524B534B700665160 /* img-with-base64-url.html in Copy Resources */,
-				7283A9D022FA754900B21C7D /* img-with-rotated-image.html in Copy Resources */,
 				49897D6C241FE9E400ECF153 /* in-app-browser-privacy-local-file.html in Copy Resources */,
 				4971B1182451F29A0096994D /* incorrectCreateTableSchema.db in Copy Resources */,
 				935786CD20F6A2910000CDFC /* IndexedDB.sqlite3 in Copy Resources */,
@@ -1724,6 +1723,7 @@
 				313C3A0221E567C300DBA86E /* SystemPreviewBlobNaming.html in Copy Resources */,
 				CD59F53519E9110D00CF1835 /* test-mse.mp4 in Copy Resources */,
 				C95984F71E36BCEF002C0D45 /* test-without-audio-track.mp4 in Copy Resources */,
+				F46D43AB26D7092800969E5E /* test.jpg in Copy Resources */,
 				524BBCA119E30C77002F1AF1 /* test.mp4 in Copy Resources */,
 				7AE9E5091AE5AE8B00CF874B /* test.pdf in Copy Resources */,
 				5C7101C725DD98B600686200 /* test_print.pdf in Copy Resources */,
@@ -2436,7 +2436,6 @@
 		71E88C4024B5299C00665160 /* ShareSheetTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ShareSheetTests.mm; sourceTree = "<group>"; };
 		71E88C4324B533EC00665160 /* img-with-base64-url.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "img-with-base64-url.html"; sourceTree = "<group>"; };
 		725C3EF2220584BA007C36FC /* AdditionalSupportedImageTypes.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = AdditionalSupportedImageTypes.html; sourceTree = "<group>"; };
-		7283A9CE22FA6BBE00B21C7D /* img-with-rotated-image.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "img-with-rotated-image.html"; sourceTree = "<group>"; };
 		7283A9D122FB1D9700B21C7D /* exif-orientation-8-llo.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "exif-orientation-8-llo.jpg"; sourceTree = "<group>"; };
 		73BD731723A846500020F450 /* DisplayName.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DisplayName.mm; sourceTree = "<group>"; };
 		751B05D51F8EAC1A0028A09E /* DatabaseTrackerTest.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DatabaseTrackerTest.mm; sourceTree = "<group>"; };
@@ -3100,6 +3099,7 @@
 		F46849BF1EEF5EDC00B937FE /* rich-and-plain-text.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "rich-and-plain-text.html"; sourceTree = "<group>"; };
 		F469FB231F01803500401539 /* contenteditable-and-target.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "contenteditable-and-target.html"; sourceTree = "<group>"; };
 		F46BD5682487062D008282D6 /* dragstart-data.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "dragstart-data.html"; sourceTree = "<group>"; };
+		F46D43AA26D7090300969E5E /* test.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = test.jpg; sourceTree = "<group>"; };
 		F47728981E4AE3AD007ABF6A /* full-page-contenteditable.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "full-page-contenteditable.html"; sourceTree = "<group>"; };
 		F47D30EB1ED28619000482E1 /* apple.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = apple.gif; sourceTree = "<group>"; };
 		F47D30ED1ED28A6C000482E1 /* gif-and-file-input.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "gif-and-file-input.html"; sourceTree = "<group>"; };
@@ -4070,7 +4070,6 @@
 				F4DEF6EC1E9B4D950048EF61 /* image-in-link-and-input.html */,
 				F45B63FA1F197F33009D38B9 /* image-map.html */,
 				3128A814237640FD00D90D40 /* image.html */,
-				7283A9CE22FA6BBE00B21C7D /* img-with-rotated-image.html */,
 				49D7FBA7241FDDDA00AB67FA /* in-app-browser-privacy-local-file.html */,
 				4971B1172451F2780096994D /* incorrectCreateTableSchema.db */,
 				934FA5C720F69FEE0040DC1B /* IndexedDB.sqlite3 */,
@@ -4181,6 +4180,7 @@
 				9BD6D39E1F7B201E00BD4962 /* sunset-in-cupertino-600px.jpg */,
 				31B76E4423299BA3007FED2C /* system-preview-trigger.html */,
 				313C3A0121E5677A00DBA86E /* SystemPreviewBlobNaming.html */,
+				F46D43AA26D7090300969E5E /* test.jpg */,
 				2E9896141D8F092B00739892 /* text-and-password-inputs.html */,
 				F4CD74C520FDACF500DE3794 /* text-with-async-script.html */,
 				F44C7A0420FAAE320014478C /* text-with-deferred-script.html */,

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm (281632 => 281633)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm	2021-08-26 17:04:05 UTC (rev 281632)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKRequestActivatedElementInfo.mm	2021-08-26 17:49:12 UTC (rev 281633)
@@ -146,57 +146,55 @@
 TEST(_WKActivatedElementInfo, InfoForRotatedImage)
 {
     auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
-    NSURLRequest *request = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"img-with-rotated-image" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]];
-    [webView loadRequest:request];
-    [webView _test_waitForDidFinishNavigation];
+    auto imagePixels = [](CGImageRef image) -> Vector<unsigned> {
+        static const size_t bytesPerPixel = 4;
+        static const size_t bitsPerComponent = 8;
+        size_t width = CGImageGetWidth(image);
+        size_t height = CGImageGetHeight(image);
+        size_t bytesPerRow = bytesPerPixel * width;
 
-    __block bool finished = false;
-    [webView _requestActivatedElementAtPosition:CGPointMake(50, 50) completionBlock: ^(_WKActivatedElementInfo *elementInfo) {
-        static const unsigned yellow = 0xFFFFFF00;
-        static const unsigned red = 0xFFF51900;
-        static const unsigned green = 0xFF278000;
-        static const unsigned blue = 0xFF0000FF;
+        static_assert(bytesPerPixel == sizeof(unsigned));
+        Vector<unsigned> pixels(height * width);
 
-        auto imagePixels = [](CGImageRef image) -> Vector<unsigned> {
-            static const size_t bytesPerPixel = 4;
-            static const size_t bitsPerComponent = 8;
-            size_t width = CGImageGetWidth(image);
-            size_t height = CGImageGetHeight(image);
-            size_t bytesPerRow = bytesPerPixel * width;
+        RetainPtr<CGColorSpaceRef> colorSpace = adoptCF(CGColorSpaceCreateDeviceRGB());
+        RetainPtr<CGContextRef> context = adoptCF(CGBitmapContextCreate(pixels.data(), width, height, bitsPerComponent, bytesPerRow, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGImageByteOrder32Little));
 
-            static_assert(bytesPerPixel == sizeof(unsigned));
-            Vector<unsigned> pixels(height * width);
+        CGContextDrawImage(context.get(), CGRectMake(0, 0, width, height), image);
+        return pixels;
+    };
 
-            RetainPtr<CGColorSpaceRef> colorSpace = adoptCF(CGColorSpaceCreateDeviceRGB());
-            RetainPtr<CGContextRef> context = adoptCF(CGBitmapContextCreate(pixels.data(), width, height, bitsPerComponent, bytesPerRow, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGImageByteOrder32Little));
+    auto indexOf = [&](UIImage *image, unsigned x, unsigned y) -> unsigned {
+        return y * image.size.width + x;
+    };
 
-            CGContextDrawImage(context.get(), CGRectMake(0, 0, width, height), image);
-            return pixels;
-        };
+    [webView synchronouslyLoadHTMLString:@"<body><img src=''></body>"];
+    RetainPtr originalImageInfo = [webView activatedElementAtPosition:CGPointMake(50, 50)];
+    RetainPtr originalImage = [originalImageInfo image];
+    auto originalImagePixels = imagePixels([originalImage CGImage]);
 
-        auto indexOf = [&](unsigned x, unsigned y) -> unsigned {
-            return y * elementInfo.image.size.width + x;
-        };
+    unsigned green = originalImagePixels[indexOf(originalImage.get(), 0, 0)];
+    unsigned yellow = originalImagePixels[indexOf(originalImage.get(), [originalImage size].width - 1, 0)];
+    unsigned blue = originalImagePixels[indexOf(originalImage.get(), 0, [originalImage size].height - 1)];
+    unsigned red = originalImagePixels[indexOf(originalImage.get(), [originalImage size].width - 1, [originalImage size].height - 1)];
 
-        auto pixels = imagePixels(elementInfo.image.CGImage);
+    [webView synchronouslyLoadHTMLString:@"<body><img src=''></body>"];
+    RetainPtr rotatedImageInfo = [webView activatedElementAtPosition:CGPointMake(50, 50)];
+    RetainPtr rotatedImage = [rotatedImageInfo image];
 
-        EXPECT_TRUE(elementInfo.type == _WKActivatedElementTypeImage);
-        EXPECT_WK_STREQ(elementInfo.imageURL.lastPathComponent, "exif-orientation-8-llo.jpg");
-        EXPECT_NOT_NULL(elementInfo.image);
-        EXPECT_EQ(elementInfo.boundingRect.size.width, 50);
-        EXPECT_EQ(elementInfo.boundingRect.size.height, 100);
-        EXPECT_EQ(elementInfo.image.size.width, 50);
-        EXPECT_EQ(elementInfo.image.size.height, 100);
+    auto rotatedImagePixels = imagePixels([rotatedImage CGImage]);
 
-        EXPECT_EQ(pixels[indexOf(0, 0)], yellow);
-        EXPECT_EQ(pixels[indexOf(elementInfo.image.size.width - 1, 0)], red);
-        EXPECT_EQ(pixels[indexOf(0, elementInfo.image.size.height - 1)], green);
-        EXPECT_EQ(pixels[indexOf(elementInfo.image.size.width - 1, elementInfo.image.size.height - 1)], blue);
+    EXPECT_TRUE([rotatedImageInfo type] == _WKActivatedElementTypeImage);
+    EXPECT_WK_STREQ([rotatedImageInfo imageURL].lastPathComponent, "exif-orientation-8-llo.jpg");
+    EXPECT_NOT_NULL(rotatedImage.get());
+    EXPECT_EQ([rotatedImageInfo boundingRect].size.width, 50);
+    EXPECT_EQ([rotatedImageInfo boundingRect].size.height, 100);
+    EXPECT_EQ([rotatedImage size].width, 50);
+    EXPECT_EQ([rotatedImage size].height, 100);
 
-        finished = true;
-    }];
-
-    TestWebKitAPI::Util::run(&finished);
+    EXPECT_EQ(rotatedImagePixels[indexOf(rotatedImage.get(), 0, 0)], yellow);
+    EXPECT_EQ(rotatedImagePixels[indexOf(rotatedImage.get(), [rotatedImage size].width - 1, 0)], red);
+    EXPECT_EQ(rotatedImagePixels[indexOf(rotatedImage.get(), 0, [rotatedImage size].height - 1)], green);
+    EXPECT_EQ(rotatedImagePixels[indexOf(rotatedImage.get(), [rotatedImage size].width - 1, [rotatedImage size].height - 1)], blue);
 }
 
 TEST(_WKActivatedElementInfo, InfoForBlank)

Deleted: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/img-with-rotated-image.html (281632 => 281633)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/img-with-rotated-image.html	2021-08-26 17:04:05 UTC (rev 281632)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/img-with-rotated-image.html	2021-08-26 17:49:12 UTC (rev 281633)
@@ -1,3 +0,0 @@
-<body>
-    <img src=""
-</body>

Added: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/test.jpg (0 => 281633)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/test.jpg	                        (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/test.jpg	2021-08-26 17:49:12 UTC (rev 281633)
@@ -0,0 +1,100 @@
+\xFF\xD8\xFF\xE0��JFIF������H��H����\xFF\xE1��\x80Exif����MM��*������������������������������������J��������������R(��������������\x87i��������������Z��������������H������������H��������\xA0��������������d\xA0��������������2��������\xFF\xED��8Photoshop 3.0��8BIM������������8BIM%����������\xD4\x8Cُ��\xB2\xE9\x80	\x98\xEC\xF8B~\xFF\xE2\xFCICC_PROFILE������\xECappl����mntrRGB XYZ \xDA��
+��
+����	��5acspAPPL����������������������������������������������������\xF6\xD6����������\xD3-appl����������������������������������������������������������������������������������������������desc����P������bdscm����\xB4����Bcprt����\xF8������\xD0wtpt����\xC8������rXYZ����\xDC������gXYZ����\xF0������bXYZ����������rTRC��������aarg����+$������ vcgt����+D����ndin����X����>chad����\x98������,mmod����\xC4������(bTRC��������gTRC��������aabg����+$������ aagg����+$������ desc��������������Display������������������������������������������������������������������������������������������������������������������������������������������������������������������mluc��������������������nlNL������������\xE8daDK������������\xFEplPL����������enUS����������,nbNO����������>frFR����������PptBR����������fptPT����������~zhCN����������\x94esES����������\xA0jaJP����������\xB2ruRU������$����\xC0svSE����������\xE4zhTW����������\xF4deDE���������
 �fiFI����������itIT����������"koKR����������6��K��l��e��u��r��e��n��-��L��C��D��L��C��D��-��f��a��r��v��e��s��k��\xE6��r��m��K��o��l��o��r�� ��L��C��D��C��o��l��o��r�� ��L��C��D��F��a��r��g��e��-��L��C��D��L��C��D�� ��c��o��u��l��e��u��r��L��C��D�� ��C��o��l��o��r��i��d��o��L��C��D�� ��a�� ��C��o��r��e��s_i\x82r�� ��L��C��D��L��C��D�� ��c��o��l��o��r0\xAB0\xE90\xFC�� ��L��C��D&25B=>9�� ��-48A?;59��F��\xE4��r��g��-
 ��L��C��D_i\x82rm\xB2fv\x98oy:Vh��F��a��r��b��-��L��C��D��V��\xE4��r��i��-��L��C��D��L��C��D�� ��c��o��l��o��r��i\xCE\xEC\xB7\xEC�� ��L��C��D����text��������Copyright Apple, Inc., 2010����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������XYZ ������������\xF3R��������\xCFXYZ ������������g2����5\xF1����'XYZ ������������i\x97����\xBBN����qXYZ ������������&����\xC1����ɔcurv����������������������
+����������#��(��-��2��6��;��@��E��J��O��T��Y��^��c��h��m��r��w��|��\x81��\x86��\x8B��\x90��\x95��\x9A��\x9F��\xA3��\xA8��\xAD��\xB2��\xB7��\xBC��\xC1��\xC6��\xCB��\xD0��\xD5��\xDB��\xE0��\xE5��\xEB��\xF0��\xF6��\xFB+%+28>ELRY`gnu|\x83\x8B\x92\x9A\xA1\xA9\xB1\xB9\xC1\xC9\xD1\xD9\xE1\xE9\xF2\xFA&/8AKT]gqz\x84\x8E\x98\xA2\xAC\xB6\xC1\xCB\xD5\xE0\xEB\xF5��!-8COZfr~\x8A\x96\xA2\xAE\xBA\xC7\xD3\xE0\xEC\xF9 -;HUcq~\x8C\x9A\xA8\xB6\xC4\xD3\xE1\xF0\xFE++:IXgw\x86\x96\xA6\xB5\xC5\xD5\xE5\xF6'7HYj{\x8C\x9D\xAF\xC0\xD1\xE3\xF5+=Oat\x86\x99\xAC\xBF\xD2\xE5\xF82FZn\x82\x96\xAA\xBE\xD2\xE7\xFB		%	:	O	d	y	\x8F	\xA4	\xBA	\xCF	\xE5	\xFB
+
+'
+=
+T
+j
+\x81
+\x98
+\xAE
+\xC5
+\xDC
+\xF3"9Qi\x80\x98\xB0\xC8\xE1\xF9*C\u\x8E\xA7\xC0\xD9\xF3+++&+@+Z+t+\x8E+\xA9+\xC3+\xDE+\xF8.Id\x9B\xB6\xD2\xEE	%A^z\x96\xB3\xCF\xEC	&Ca~\x9B\xB9\xD7\xF51Om\x8C\xAA\xC9\xE8&Ed\x84\xA3\xC3\xE3#Cc\x83\xA4\xC5\xE5'Ij\x8B\xAD\xCE\xF04Vx\x9B\xBD\xE0&Il\x8F\xB2\xD6\xFAAe\x89\xAE\xD2\xF7@e\x8A\xAF\xD5\xFA Ek\x91\xB7\xDD*Qw\x9E\xC5\xEC;c\x8A\xB2\xDA*R{\xA3\xCC\xF5Gp\x99\xC3\xEC@j\x94\xBE\xE9>i\x94\xBF\xEA  A l \x98 \xC4 \xF0!!H!u!\xA1!\xCE!\xFB"'"U"\x82"\xAF"\xDD#
+#8#f#\x94#\xC2#\xF0$$M$|$\xAB$\xDA%	%8%h%\x97%\xC7%\xF7&'&W&\x87&\xB7&\xE8''I'z'\xAB'\xDC(+(?(q(\xA2(\xD4))8)k)\x9D)\xD0**5*h*\x9B*\xCF++6+i+\x9D+\xD1,,9,n,\xA2,\xD7--A-v-\xAB-\xE1..L.\x82.\xB7.\xEE/$/Z/\x91/\xC7/\xFE050l0\xA40\xDB11J1\x821\xBA1\xF22*2c2\x9B2\xD43+3F33\xB83\xF14+4e4\x9E4\xD855M5\x875\xC25\xFD676r6\xAE6\xE97$7`7\x9C7\xD788P8\x8C8\xC899B99\xBC9\xF9:6:t:\xB2:\xEF;-;k;\xAA;\xE8<'<e<\xA4<\xE3="=a=\xA1=\xE0> >`>\xA0>\xE0?!?a?\xA2?\xE2@#@d@\xA6@\xE7A)AjA\xACA\xEEB0BrB\xB5B\xF7C:C}C\xC0DDGD\x8AD\xCEEEUE\x9AE\xDEF"FgF\xABF\xF0G5G{G\xC0HHKH\x91H\xD7IIcI\xA9I\xF0J7J}J\xC4KKSK\x9AK\xE2L*LrL\xBAMMJM\x93M\xDCN%NnN\xB7O��OIO\x93O\xDDP'PqP\xBBQQPQ\x9BQ\xE6R1R|R\xC7SS_S\xAAS\xF6TBT\x8FT\xDBU(UuU\xC2VV\V\xA9V\xF7WDW\x92W\xE0X/X}X\xCBYYiY\xB8ZZVZ\xA6Z\xF5[E[\x95[\xE5\5\\x86\\xD6]']x]\xC9^^l^\xBD__a_\xB3``W`\xAA`\xFCaOa\xA2a\xF5bIb\x9Cb\xF0cCc\x97c\xEBd@d\x94d\xE9e=e\x92e\xE7f=f\x92f\xE8g=g\x93g\xE9h?h\x
 96h\xECiCi\x9Ai\xF1jHj\x9Fj\xF7kOk\xA7k\xFFlWl\xAFmm`m\xB9nnkn\xC4ooxo\xD1p+p\x86p\xE0q:q\x95q\xF0rKr\xA6ss]s\xB8ttpt\xCCu(u\x85u\xE1v>v\x9Bv\xF8wVw\xB3xxnx\xCCy*y\x89y\xE7zFz\xA5{{c{\xC2|!|\x81|\xE1}A}\xA1~~b~\xC2#\x84\xE5\x80G\x80\xA8\x81
+\x81k\x81͂0\x82\x92\x82\xF4\x83W\x83\xBA\x84\x84\x80\x84\xE3\x85G\x85\xAB\x86\x86r\x86ׇ;\x87\x9F\x88\x88i\x88Ή3\x89\x99\x89\xFE\x8Ad\x8Aʋ0\x8B\x96\x8B\xFC\x8Cc\x8Cʍ1\x8D\x98\x8D\xFF\x8Ef\x8EΏ6\x8F\x9E\x90\x90n\x90֑?\x91\xA8\x92\x92z\x92\xE3\x93M\x93\xB6\x94 \x94\x8A\x94\xF4\x95_\x95ɖ4\x96\x9F\x97
+\x97u\x97\xE0\x98L\x98\xB8\x99$\x99\x90\x99\xFC\x9Ah\x9A՛B\x9B\xAF\x9C\x9C\x89\x9C\xF7\x9Dd\x9DҞ@\x9E\xAE\x9F\x9F\x8B\x9F\xFA\xA0i\xA0ءG\xA1\xB6\xA2&\xA2\x96\xA3\xA3v\xA3\xE6\xA4V\xA4ǥ8\xA5\xA9\xA6\xA6\x8B\xA6\xFD\xA7n\xA7\xE0\xA8R\xA8ĩ7\xA9\xA9\xAA\xAA\x8F\xAB\xABu\xAB\xE9\xAC\\xACЭD\xAD\xB8\xAE-\xAE\xA1\xAF\xAF\x8B\xB0��\xB0u\xB0\xEA\xB1`\xB1ֲK\xB2³8\xB3\xAE\xB4%\xB4\x9C\xB5\xB5\x8A\xB6\xB6y\xB6\xF0\xB7h\xB7\xE0\xB8Y\xB8ѹJ\xB9º;\xBA\xB5\xBB.\xBB\xA7\xBC!\xBC\x9B\xBD\xBD\x8F\xBE
+\xBE\x84\xBE\xFF\xBFz\xBF\xF5\xC0p\xC0\xEC\xC1g\xC1\xE3\xC2_\xC2\xDB\xC3X\xC3\xD4\xC4Q\xC4\xCE\xC5K\xC5\xC8\xC6F\xC6\xC3\xC7Aǿ\xC8=ȼ\xC9:ɹ\xCA8ʷ\xCB6˶\xCC5̵\xCD5͵\xCE6ζ\xCF7ϸ\xD09к\xD1<Ѿ\xD2?\xD2\xC1\xD3D\xD3\xC6\xD4I\xD4\xCB\xD5N\xD5\xD1\xD6U\xD6\xD8\xD7\\xD7\xE0\xD8d\xD8\xE8\xD9l\xD9\xF1\xDAv\xDA\xFBۀ\xDC܊\xDDݖ\xDEޢ\xDF)߯\xE06\xE0\xBD\xE1D\xE1\xCC\xE2S\xE2\xDB\xE3c\xE3\xEB\xE4s\xE4\xFC\xE5\x84\xE6+\xE6\x96\xE7\xE7\xA9\xE82\xE8\xBC\xE9F\xE9\xD0\xEA[\xEA\xE5\xEBp\xEB\xFB\xEC\x86\xED\xED\x9C\xEE(\xEE\xB4\xEF@\xEF\xCC\xF0X\xF0\xE5\xF1r\xF1\xFF\xF2\x8C\xF3\xF3\xA7\xF44\xF4\xC2\xF5P\xF5\xDE\xF6m\xF6\xFB\xF7\x8A\xF8\xF8\xA8\xF98\xF9\xC7\xFAW\xFA\xE7\xFBw\xFC\xFC\x98\xFD)\xFD\xBA\xFEK\xFE\xDC\xFFm\xFF\xFFpara����������������ff����\xF2\xA7����+Y����\xD0����
+\xC0vcgt����������������������������V\x89q8\xE5\xC8\xA7\x8Fy	e
+[UQ+VRZ`hn\x86\xC5[\xA6\xF1<\x87\xD90 ~!\xD4#+$\x83%\xDD':(\x98)\xF6+T,\xB4./y0\xE12L3\xB256\x867\xEF9T:\xBC<"=\x88>\xEE@RA\xB5CDxE\xD9G8H\x97I\xF5KTL\xABM\xE3OPAQmR\x97S\xC1T\xE6V
+W)XFY^Zr[\x83\\x90]\x9B^\xA1_\xA6`\xA8a\xA7b\xA7c\xA3d\x9Ee\x90fgnh^iNj<k+lmm\xFAn\xE9o\xD8p\xC7q\xB7r\xA7s\x96t\x85utvcwRxAy,z{{\xEC|\xD7}\xC1~\xAC\x97\x80\x81\x81m\x82X\x83C\x84.\x85\x86\x86\xF1\x87܈ȉ\xB4\x8A\xA0\x8B\x8C\x8C\x8D\x8D\x8F\x8E\x8E\x8F\x8E\x90\x8E\x91\x8D\x92\x8B\x93\x88\x94\x82\x95}\x96t\x97l\x98b\x99V\x9AI\x9B;\x9C,\x9D\x9E\x9E\xFA\x9F\xE6\xA0Ρ\xB3\xA2\x98\xA3|\xA4b\xA5H\xA6.\xA7\xA7\xFB\xA8\xE2\xA9ʪ\xB1\xAB\x9A\xAC\x82\xADl\xAEU\xAF?\xB0)\xB1\xB1\xFE\xB2\xE8\xB3Ӵ\xB8\xB5\x9C\xB6\x80\xB7c\xB8E\xB9'\xBA\xBA\xE8\xBBǼ\xA5\xBD\x81\xBE\\xBF7\xC0\xC0\xE9\xC1\xC1˜\xC3n\xC4C\xC5\xC5\xF1\xC6\xD0dzȖ\xC9z\xCA^\xCBB\xCC(\xCD\xCD\xF5\xCE\xDC\xCF\xC4Ьѕ\xD2~\xD3g\xD4P\xD5:\xD6#\xD7+\xD7\xF7\xD8\xE1\xD9\xD2\xDA\xC2۲ܢݑހ\xDFo\xE0]\xE1J\xE25\xE3 \xE4
+\xE4\xF2\xE5\xD9\xE6\xBF\xE7\xA4\xE8\x87\xE9k\xEAM\xEB.\xEC\xEC\xD7\xED\xA0\xEEk\xEF7\xF0\xF0\xD7\xF1\xAC\xF2\x84\xF3`\xF4A\xF5%\xF6\xF6\xFD\xF7\xF0\xF8\xE8\xF9\xE2\xFA\xE2\xFB\xE3\xFC\xE6\xFD\xED\xFE\xF4\xFF\xFF������VEA/\xEE\xC1\x87S.\xE7	\xC6
+\xA6\x8Cv+_H7\xFE/^\x94\xCC7h\xA1\xDDQ \x8E!\xCC#
+$G%\x85&\xC9()J*\x8E+\xD4-.h/\xB512O3\x994\xE36-7w8\xC2:;S<\x9B=\xE1?)@mA\xB2B\xF9D>E\x83F\xBCG\xD8H\xE9I\xF8KLMN'O/P3Q6R6S3T-U%VWX��X\xEFY\xDEZ\xCD[\xBA\\xA1]\x80^[_5``\xE9a\xC4b\xA0c{dUe/f
+f\xE5g\xC0h\x9BiwjQk,ll\xE2m\xBDn\x99orpLq&r��r\xDAs\xB3t\x8DugvAww\xF4x\xCEy\xA7z\x82{[|4}}\xE6~\xBF\x98\x80s\x81X\x82>\x83#\x84\x84\xEE\x85Ԇ\xBA\x87\xA0\x88\x85\x89k\x8AP\x8B5\x8C\x8C\xFF\x8D\xE4\x8Eȏ\xAE\x90\x92\x91v\x92[\x93?\x94 \x95��\x95ߖ\xBF\x97\xA0\x98\x81\x99a\x9AB\x9B#\x9C\x9C\xE5\x9DǞ\xA9\x9F\x8B\xA0n\xA1P\xA23\xA3\xA3\xF8\xA4ۥ\xBE\xA6\xA2\xA7\x82\xA8b\xA9B\xAA"\xAB\xAB\xE3\xACí\xA4\xAE\x83\xAFd\xB0D\xB1$\xB2\xB2\xE4\xB3Ŵ\xA5\xB5\x84\xB6d\xB7D\xB8$\xB9\xB9\xEC\xBAջ\xBE\xBC\xA9\xBD\x93\xBE~\xBFk\xC0Y\xC1G\xC27\xC3(\xC4\xC5\xC6\xC6\xF8\xC7\xEE\xC8\xE5\xC9\xDD\xCA\xD6\xCB\xCF\xCC\xC9\xCD\xCC\xCE\xCF\xCF\xD1\xD0\xD3\xD1\xD6\xD2\xD8\xD3\xDA\xD4\xDC\xD5\xDE\xD6\xE0\xD7\xE2\xD8\xE4\xD9\xE6\xDA\xE7\xDB\xEA\xDC\xEC\xDD\xF0\xDE\xF3\xDF\xF6\xE0\xF9\xE2\xE3%\xE4N\xE5y\xE6\xA7\xE7\xD9\xE9\xEAN\xEB\x91\xEC\xD9\xEE*\xEF\x83\xF0\xE3\xF2L\xF3\xBB\xF53\xF6\xAF\xF83\xF9\xBB\xFBF\xFC\xD7\xFEi\xFF\xFF������V.\xEB\x9DS\xB9v6\xF1\xB8~	H
+
+\xF0\xC4\x96+jE!\xFE*9EVj\x80\x95\xAD\xC5\xDE\xFA 0!N"o#\x8E$\xAD%\xCF&\xF3()?*g+\x8C,\xB0-\xD7.\xFD0!1F2h3\x8A4\xAC5\xCD6\xEC89(:H;d<=\x9C>\xAE?\xAB@\x9EA\x8FB~CkDXE@F&G	G\xE8H\xC5I\x9EJtKFLL\xE0M\xAANrO6O\xFAP\xBDQ~R:R\xF5S\xB0TkU%U\xDFV\x9AWTXX\xC7Y\x81Z:Z\xF3[\xAC\g]]\xD7^\x90_I``\xBCazb9b\xF7c\xB6dte2e\xF1f\xAFgmh*h\xE8i\xA6jdk k\xDDl\x9AmVnn\xCFo\x8BpHqq\xC3r\x81s>s\xFCt\xB9uxv5v\xF1w\xAExky'y\xE3z\x9F{[||\xD2}\x8E~HÀ\x8C\x81X\x82%\x82񃽄\x8A\x85V\x86#\x86\x88\x87\x89R\x8A\x8Aꋵ\x8C\x80\x8DK\x8E\x8EᏬ\x90v\x91B\x92\x92ܓ\xA9\x94v\x95C\x96\x96ޗ\xAB\x98y\x99F\x9A\x9Aᛯ\x9C}\x9DL\x9E\x9E蟶\xA0\x84\xA1S\xA2%\xA2\xFB\xA3֤\xB0\xA5\x8A\xA6d\xA7?\xA8\xA8\xF6\xA9Ҫ\xAF\xAB\x8C\xACi\xADG\xAE&\xAF\xAF\xE4\xB0ñ\xA3\xB2\x83\xB3d\xB4J\xB5:\xB60\xB7'\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF%\xC02\xC1D\xC2Y\xC3sďů\xC6\xD2\xC7\xF9\xC9 \xCA]\xCB\xE1͈\xCF4\xD0\xE5Ҡ\xD4g\xD6>\xD8*\xDA-\xDCMޏ\xE0\xF2\xE3}\xE6-\
 xE9��\xEB\xF3\xEF
+\xF2A\xF5\x8F\xF8\xF3\xFCo\xFF\xFF����ndin������������6����\xA4����V\xD5����Us����\xA4����%?����+\xCC����P+����T9��\x85��
+��\x8C\xCC������������������������$��/��<��J��Y��j��{��\x8F��\xA3��\xB9��\xD0��\xE92Jc}\x98\xB4\xD1\xEF-Mo\x91\xB4\xD8\xFD"Ip\x98\xC1\xEBBn\x9C\xCA\xF9(X\x8A\xBC\xEF#X\x8E\xC6\xFE7r\xAD\xEA'f\xA6\xE7	)	m	\xB1	\xF7
+>
+\x86
+\xCFe\xB1a\xBD++|+\xDFC\xA9~\xED^\xD3K\xC6E\xC6L\xD5a\xF1\x83\xB1R\xF8\xA0J\xF7\xA7Y+\xC4~:\xF9\xBA }!C""\xD8#\xA6$w%J&$''\xE0(\xC2)\xA7*\x8E+x,e-S.E/:011*2&3%4'5+627;819):%;#<$=(>/?:@JA\BtC\x8FD\xAEE\xD2F\xFAH&IVJ\x8AK\xC2L\xFDNDO\x92P\xE3R8S\x8DT\xE6VAW\x9FX\xFFZa[\xC6]-^\x96`aob\xDFdRe\xC7g@h\xB9jAk\xCCm\n\xF0p\x89r&s\xC9uqwx\xD4z\x8E|O~߁\xB0\x83\x87\x85b\x87@\x89+\x8A׌\xA2\x8Eo\x90@\x92\x93䕹\x97\x8F\x99h\x9BC\x9D \x9E\xFF\xA0\xE1\xA2Ť\xAE\xA6\x98\xA8\x85\xAAu\xACZ\xAEC\xB0/\xB2\xB4\xB6
+\xB8\xBA\xBC+\xBE\xC0+\xC2C\xC4aƆȲ\xCA\xE2\xCD\xCFUі\xD4֧\xD93ۻ\xDE:\xE0\xB3\xE3"\xE5\x87\xE7\xE2\xEA3\xECz\xEE\xB8\xF0\xEE\xF3 \xF5J\xF7s\xF9\x99\xFB\xBB\xFD\xE0\xFF\xFF������������������(��4��C��S��e��x��\x8D��\xA4��\xBC��\xD7��\xF3(B\x\x94\xB2\xD1\xF25X|\xA2\xC8\xF0Bm\x99\xC6\xF3#S\x84\xB6\xE9Q\x86\xBD\xF4-g\xA3\xDF\\x9C\xDD d\xA9\xF0	8	\x81	\xCC
+
+e
+\xB3T\xA6g\xCE+8+\xA4\x83\xF7m\xE7c\xE3g\xEEy\x99/\xC8d\xA6U
+\xC3=\xFE\xC2\x8AT!\xF1\xC5 \x9A!t"P#/$$\xF6%\xE0&\xCD'\xBC(\xAF)\xA6*\x9F+\x9C,\x9B-\x9E.\xA4/\xAE0\xBA1\xCA2\xDE3\xF556,7K8^9u:\x8F;\xAB<\xCA=\xEC?@:AeB\x94C\xC6D\xFBF2GnH\xABI\xEDK2LxM\xC5OPqQ\xCCS)T\x88U\xECWQX\xBAZ&[\x94]^x_\xEEahb\xE3dce\xE4gjh\xF0j\x81lm\xABoDp\xE1r\x81t$u\xCCwuy#z\xD4|\x88~?\xF9\x81\xB8\x83y\x85?\x87\x88Ɗ\x84\x8CC\x8E\x8FǑ\x8A\x93N\x95\x96٘\x9F\x9Af\x9C-\x9D\x{15FF61}\x87\xA3R\xA5\xA6쨻\xAA\x8B\xACN\xAE\xAFݱ\xA9\xB3w\xB5H\xB7\xB8\xF1\xBA˼\xA6\xBE\x85\xC0e\xC2I\xC4/\xC6\xC8\xC9\xEC\xCB\xDA\xCD\xCBϽѱ\xD3r\xD5-\xD6\xE7ؠ\xDAW\xDC
+ݷ\xDFc\xE1	\xE2\xAA\xE4H\xE5\xDE\xE7n\xE8\xFA\xEA\x82\xEC\xED\x80\xEE\xFB\xF0p\xF1\xE3\xF3T\xF4\xC0\xF6+\xF7\x96\xF9��\xFAg\xFB\xCD\xFD5\xFE\x9B\xFF\xFF����������	������'��6��F��Y��m��\x83��\x9B��\xB6��\xD2��\xF0,Ig\x87\xA9\xCC\xF0<d\x8D\xB8\xE4@p\xA1\xD3<s\xAA\xE3X\x94\xD2S\x95\xD9f\xAF\xFAF\x94\xE4	6	\x89	\xDF
+5
+\x8E
+\xE9E\xA3}\xF2+j+\xE6d\xE8o\xFB\x8C#\xBFb\xBAo+\xEB\xB1\x81V0\xF0\xD7\xC2\xB2\xA6\x9F \x9B!\x9D"\xA3#\xAE$\xBC%\xC9&\xD7'\xE9)*+;,_-\x88.\xB5/\xE612W3\x974\xDB6$7p8\xBE:;i<\xC5>$?\x89@\xF3BbC\xD6EOF\xCCHOI\xD6KcL\xF3NnO\xE5Q_R\xDET_U\xE6WoX\xFEZ\x90\']\xC1_`ab\xABdWfg\xBBipk'l\xE1n\xA0par's\xF1u\xBEw\x8Fyc{<}~\xF5\x80؂\xBE\x84\xA9\x86\x96\x88z\x8AU\x8C2\x8E\x8F\xF8\x91ޓǕ\xB2\x97\xA0\x99\x90\x9B\x82\x9Dv\x9Fl\xA1e\xA3`\xA5_\xA7^\xA9a\xABS\xAD1\xAF\xB0\xED\xB2̴\xAA\xB6\x87\xB8b\xBA:\xBC\xBD࿮\xC1x\xC3=\xC5��ƿ\xC8{\xCA5\xCB\xED͢\xCFY\xD1҉\xD3\xCB\xD5\xD67\xD7lؠ\xD9\xD2\xDB��\xDC-\xDDT\xDEwߖ\xE0\xAE\xE1\xC1\xE2\xCD\xE3\xD6\xE4\xD5\xE5\xD1\xE6\xC4\xE7\xB2\xE8\x9C\xE9}\xEA_\xEB5\xEC\xEC\xDD\xED\xA7\xEEr\xEF6\xEF\xF8\xF0\xB9\xF1t\xF2.\xF2\xE9\xF3\x9C\xF4O\xF5\xF5\xB0\xF6]\xF7
+\xF7\xB4\xF8]\xF9\xF9\xAD\xFAR\xFA\xF8\xFB\x9D\xFC?\xFC\xE1\xFD\x83\xFE#\xFE\xC2\xFF`\xFF\xFF����sf32����������B����\xDE\xFF\xFF\xF3&����\x92����\xFD\x91\xFF\xFF\xFB\xA2\xFF\xFF\xFD\xA3����\xDC����\xC0lmmod����������������\x9C\xB7��������\xC6C\x84\x80��������������������������������\xFF\xC0����2��d"��\xFF\xC4����������������������	
+\xFF\xC4��\xB5������}��!1AQa"q2\x81\x91\xA1#B\xB1\xC1R\xD1\xF0$3br\x82	
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x83\x84\x85\x86\x87\x88\x89\x8A\x92\x93\x94\x95\x96\x97\x98\x99\x9A\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFF\xC4����������������	
+\xFF\xC4��\xB5����w��!1AQaq"2\x81B\x91\xA1\xB1\xC1	#3R\xF0br\xD1
+$4\xE1%\xF1&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x92\x93\x94\x95\x96\x97\x98\x99\x9A\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFF\xDB��C��	
+	+	
+	++\xFF\xDB��C\xFF\xDD����\xFF\xDA������?��\xF8\xAE\x8A(\xAF\xE5s\xF8\x9C(\xA2\x81\xC1\xA0\xC9zҁ\xB4\xF2q\xF8W1\xAB\xFC_\xD0t{\xDF"\xFE\xE6\xED\ܛ5)\xA7\xDCȯ0$yj\xCBV~\xBCO\xB6tY\xF8\xA2Ů49$x\x96F\x89\xBCȞ&FJ\xB8}Eu\xD4\xC0\xE2(\xC1T\xA9NJ/\xABM/\xBCﭖb\xF0\xF4\xD5Z\xB4\xA4\xA2\xFA\xB4\xD2\xFB\xCF\xDD\xF8$\xCD\xFF��\xEC\xF8{\xFF��q\xFD9]W\xD2\xF5\xF3G\xFC\x8F\xF8'g\xC3\xDF\xFB\x88\xFF��\xE9\xCA꾑\x8A\xEE+\x89&He\x8EF\x81\xFC\xB9Xm+\xB5\x87c\xB5\x94\xE0\xF6 \xF7\xAF\xF3K\xC4I\xF1.h\x{D9F6}\xA9\xFF��\xA5\xB3\xFB߃\xFC \xE0?\xEB\xD5?\xFD%QE\xF1\xA7\xD3Q@Q@\xFF\xD0\xF8\xB3\x9F_֎}Z\xF9\x87\xFE>\xBD\xFF��A\x9DS\xFF��\x9F\xFCh\xFF��\x85\x8F\xAF\xD0gT\xFF��\xC0\xA7\xFF��\xFD\xFF��\xFE)\xBFğ\xF49\xA3\xFF��\x80\xC8\xFEe\xFF��Q\xAA\xFF��\xCF\xE5\xF7Os\xEB\xFA\xD1ϯ\xEB_0\xFF��\xC2\xC7׿\xE83\xAA\xE0S\xFF��\x8D\xF0\xB1\xF5\xEF\xFA\xEA\x9F\xF8\xFF�
 �\xE3G\xFCS\x89?\xE
 8sG\xFF��\x90\xA8\xD5\xE7\xF2\xFB\x8Fg\xF8\xC1V\xB7>XV8\xC3\xF8\x8E\xDA0fYI8\xF5'\x92{\x93U\xBE"jR\xCB\xE3\xCB=\xD7P\x8BH\x8A\xF6\xCAk\x94o=\xED\x8D\xC4\xE0\x85Ϙ\x84d^v\xE7}\xE0@\xE1\xFA\xE5\xFC\xFE(\x9A<I4\xBA\x84\x90dF\xD7eh\xC1\xE4\xE0\xB6q\xD0t\xF4\xA7kڵ׊m\xE2\x8Bė3\xDF\xC5	\xDD\HeT8\xC6@b@8\xE2\xBD\xDC?\xEC\xF5\xE2
+Q\xA4\xA5\x9CRn*I\xFB\x92ݻ\xDF\xCE\xC7\xD3\xE12c
+u.ছ\xB7Y6\xD3Wz\xDB\xCF\xF0?\?d\xBF\x8E\xFE/\xF89\xFB3\xFC!\xF1F\xBD\xAC\xF8\x97\xC4\xFF��t=6\xCEv\xE7\xC2^!\x9BO\xBF\xF0\x95\xCB\xF8\x9FQۨ\xDC逪j\x96W\xA28\xED\x9B&B\x89\xADRr\xFF��j\xFF��\xC1'\xF4-#B\xB8\xF8\xE34Z\xFE\xB5\xA8\xEB7<Ii-\xBE\xA3\xE2;\xAB\xFD\x90[^\x98\xE3e\xB7\x9EVX\xD8$\x91+H\xA8Ǘ\xBD\x9B\x8FĿ\x82\xED\xF4\xDE\xF0Ƨs}y&\xA3\xA3\xC7\xE5\xD8ݴ\xECg\xB2X\xEE不b|\xEEEI\x99\xA5P\xA4v,0\xC75\xE8\xFE\xF8\xD3\xE3\xF8\xB3[׼!\xE2\xBF\xE9z\xE7\x89^95}B\xD3S\x9A\xADQ\xA3Fn%W+1P\xCC\xB18\xDCqֿ\xCA?|$\xF6\xEC\xEB\x85\xFD\xBA\x85XW\x9C%8\xC6\xCA^Σ\xDE7\xB5\x9B\xBC\x9B\x8A\x8AmE\xB8\xF39M\xFF��\xA7|\xF4V\xCEs\xBE\xCB3:8\xEAjiR\xA8\xA2\xE2\xF4槶\x8A\xDA]m\xA7m4?\xA2ߵG\xFD\xF5\xFF��\xBE\x85j\x8F\xFB\xEB\xFF��}
+\xFE|\xFF��\xE1\xB0\xFE,\xFF��\xD1M\xF1\xF7\xFE\xFCr\x8F\xF8l?\x8B?\xF4S|}\xFF��\x85\xDF\xFF��\xAF\xE6/\xF8\x96\xBCG\xFDc\xFF��\x80?\xFEH\xFB\xBF\xF8\x94\xCC\xFF��\xFE\x83\xA8\xFF��\xE4\xFF��\xE4A\x9Fj\x8F\xFB\xEB\xFF��}
+>\xD5\xF7\xD7\xFE\xFA\xFC\xF9\xFF��\xC3a\xFCY\xFF��\xA2\x9B\xE3\xEF\xFC(.\xFF��\xF8\xED\xF0\xD8\xE8\xA6\xF8\xFB\xFF��
+\xBF\xFE;G\xFCK^#\xFE\x861\xFF��\xC0\xFF��$\xF1)\x99\xFF��\xFDQ\xFF��\xC9\xFF��\xC8\xFE\x83>\xD5\xF7\xD7\xFE\xFA}\xAA?\xEF\xAF\xFD\xF4+\xF9\xF3\xFF��\x86\xC3\xF8\xB3\xFF��E7\xC7\xDF\xF8P]\xFF��\xF1\xDA?\xE1\xB0\xFE,\xFF��\xD1M\xF1\xF7\xFE\xFCv\x8F\xF8\x96\xBCG\xFDc\xFF��\x80?\xFEH?\xE2S3\xFF��\xFA\xA3\xFF��\x93\xFF��\x91\xFF\xD1\xFCs\xA2\x8A+\xFD\xFC?+
+(\xA2\x80
+3E\xF4\x8F\xC0\xFF��\xF9%zO\xFB\xB2\xE8Ʈ\xAE\xB9O\x81\xFF��\xF2J\xF4\x9F\xF7d\xFF��э]]\xCDg\x8E\xF2q8\x87\xFE\xC2\xF1\xFArG\xFD\xF85\xFF��$C\xFF��`\xB4?\xF4\xDCB\x8A(\xAFʏ\xD2Š(\xA0\x8A(\xA0\xFF\xD2\xFCs\xA2\x8A+\xFD\xFC?+
+(\xA2\x80
+(\xA2\x80>\x91\xF8\xFF��$\xAFI\xFF��vO\xFD\xD5\xD5\xD7)\xF0?\xFEI^\x93\xFE\xEC\x9F\xFA1\xAB\xAB\xAF\xF9\xAC\xF1\xCF\xFEN'\xFF��\xD8^#\xFF��NH\xFF��\xA0_\xBF\xE4\x82\xC8\xEC\x87\xFE\x9B\x88QE\xF9Q\xFAXQE��QE\xFF\xD9
\ No newline at end of file
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to