<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>92010</bug_id>
          
          <creation_ts>2012-07-23 10:45:42 -0700</creation_ts>
          <short_desc>[Chromium] Move layoutTestMode to WebCore</short_desc>
          <delta_ts>2012-07-24 01:54:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92082</dependson>
          <blocked>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>675811</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 10:45:42 -0700</bug_when>
    <thetext>[Chromium] Move layoutTestMode to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675815</commentid>
    <comment_count>1</comment_count>
      <attachid>153818</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 10:46:33 -0700</bug_when>
    <thetext>Created attachment 153818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675816</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 10:47:31 -0700</bug_when>
    <thetext>Does not currently compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675822</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 10:55:33 -0700</bug_when>
    <thetext>Correction: compiles, does not link.


out/Release/../../Source/WebKit/chromium/third_party/gold/gold64: out/Release/obj.target/Source/WebKit/chromium/libwebkit.a(out/Release/obj.target/Source/WebKit/chromium/../../../webkit/Source/WebKit/chromium/src/WebKit.o): in function WebKit::setLayoutTestMode(bool):WebKit.cpp(.text._ZN6WebKit17setLayoutTestModeEb+0x5): error: undefined reference to &apos;WebCore::LayoutTestMode::setLayoutTestMode(bool)&apos; 
out/Release/../../Source/WebKit/chromium/third_party/gold/gold64: out/Release/obj.target/Source/WebCore/WebCore.gyp/libwebcore_rendering.a(out/Release/obj.target/Source/WebCore/WebCore.gyp/../../../webcore_rendering/Source/WebCore/rendering/RenderThemeChromiumSkia.o): in function WebCore::RenderThemeChromiumSkia::caretBlinkInterval() const:RenderThemeChromiumSkia.cpp(.text._ZNK7WebCore23RenderThemeChromiumSkia18caretBlinkIntervalEv+0x5): error: undefined reference to &apos;WebCore::LayoutTestMode::layoutTestMode()&apos;
collect2: ld returned 1 exit status
make: *** [out/Release/TestWebKitAPI] Error 1
zsh: exit 2     Tools/Scripts/build-webkit --chromium


And other such niceness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675830</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-23 11:09:02 -0700</bug_when>
    <thetext>I don&apos;t think we should be moving a class about layout test into WebCore. That to me is a layer violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675831</commentid>
    <comment_count>5</comment_count>
      <attachid>153818</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 11:11:58 -0700</bug_when>
    <thetext>Comment on attachment 153818
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=153818&amp;action=review

&gt; Source/WebCore/platform/LayoutTestMode.h:39
&gt; +class LayoutTestMode {
&gt; +public:
&gt; +    static bool layoutTestMode();
&gt; +    static void setLayoutTestMode(bool);

We don&apos;t really need this class wrapper.  We can just have layoutTestMode() and setLayoutTestMode() exist in the WebCore namespace.

&gt; Source/WebCore/platform/LayoutTestMode.h:44
&gt; +    static bool isLayoutTestModeEnabled;

In that approach, this can just be a static in the LayoutTestMode.cpp file.

We might take this opportunity to rename these functions to isRunningLayoutTest() or something else more WebKity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675833</commentid>
    <comment_count>6</comment_count>
      <attachid>153818</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 11:13:25 -0700</bug_when>
    <thetext>Comment on attachment 153818
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=153818&amp;action=review

&gt; Source/WebCore/WebCore.gypi:290
&gt; +            &apos;platform/LayoutTestMode.h&apos;,

Looks like you didn&apos;t add platform/LayoutTestMode.cpp to WebCore.gypi, which is likely what&apos;s causing your linking trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675843</commentid>
    <comment_count>7</comment_count>
      <attachid>153818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 11:30:28 -0700</bug_when>
    <thetext>Comment on attachment 153818
Patch

Attachment 153818 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13329107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675858</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-23 11:45:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I don&apos;t think we should be moving a class about layout test into WebCore. That to me is a layer violation.

This is not a new dependency.  You can see that in the Chromium port, WebCore already knows about this &quot;layout test&quot; boolean.  Mark is just moving it from one spot in WebCore to another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675868</commentid>
    <comment_count>9</comment_count>
      <attachid>153826</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 11:56:28 -0700</bug_when>
    <thetext>Created attachment 153826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675869</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 11:57:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 153818 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153818&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/LayoutTestMode.h:39
&gt; &gt; +class LayoutTestMode {
&gt; &gt; +public:
&gt; &gt; +    static bool layoutTestMode();
&gt; &gt; +    static void setLayoutTestMode(bool);
&gt; 
&gt; We don&apos;t really need this class wrapper.

Removed in latest patch.

&gt; 
&gt; &gt; Source/WebCore/platform/LayoutTestMode.h:44
&gt; &gt; +    static bool isLayoutTestModeEnabled;
&gt; 
&gt; In that approach, this can just be a static in the LayoutTestMode.cpp file.
&gt; 
&gt; We might take this opportunity to rename these functions to isRunningLayoutTest() or something else more WebKity.

Renamed in latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675871</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 11:57:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 153818 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153818&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/WebCore.gypi:290
&gt; &gt; +            &apos;platform/LayoutTestMode.h&apos;,
&gt; 
&gt; Looks like you didn&apos;t add platform/LayoutTestMode.cpp to WebCore.gypi, which is likely what&apos;s causing your linking trouble.

Thanks. Added in latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675949</commentid>
    <comment_count>12</comment_count>
      <attachid>153826</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 13:28:43 -0700</bug_when>
    <thetext>Comment on attachment 153826
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=153826&amp;action=review

&gt; Source/WebCore/platform/LayoutTestMode.h:32
&gt; +#ifndef LayoutTestMode_h
&gt; +#define LayoutTestMode_h

I wonder if LayoutTestMode.h is still the right name for this header...  Perhaps LayoutTestSupport.h (just LayoutTest.h doesn&apos;t seem right)?  Sorry to be so nit-picky about the names.  If you want to land it with this name, that&apos;s fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676332</commentid>
    <comment_count>13</comment_count>
      <attachid>153939</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 19:34:06 -0700</bug_when>
    <thetext>Created attachment 153939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676333</commentid>
    <comment_count>14</comment_count>
      <attachid>153939</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-07-23 19:34:49 -0700</bug_when>
    <thetext>Comment on attachment 153939
Patch

Renamed to LayoutTestSupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676385</commentid>
    <comment_count>15</comment_count>
      <attachid>153939</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 22:05:47 -0700</bug_when>
    <thetext>Comment on attachment 153939
Patch

Clearing flags on attachment: 153939

Committed r123424: &lt;http://trac.webkit.org/changeset/123424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676386</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 22:05:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153818</attachid>
            <date>2012-07-23 10:46:33 -0700</date>
            <delta_ts>2012-07-23 11:56:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92010-20120723134556.patch</filename>
            <type>text/plain</type>
            <size>42993</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzM0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA3LTIzICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
bGF5b3V0VGVzdE1vZGUgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tp
bmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRUZXN0TW9k
ZTo6bGF5b3V0VGVzdE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0VGVzdE1vZGU6OnNl
dExheW91dFRlc3RNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5b3V0VGVzdE1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0VGVzdE1vZGU6OkxheW91dFRlc3RNb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3Jt
U3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6OnNjcm9sbGJhclRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNjcm9sbGJhclRoaWNr
bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0
b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVD
aHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
b2t1cEFsdE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udENvbnRhaW5zQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGxMb2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvRm9udFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6
ZHJhd0dseXBocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpz
eXN0ZW1Db2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bU1hYzo6dXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6Y2FyZXRCbGlua0ludGVydmFsKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21p
dW1XaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1
bVdpbjo6c3lzdGVtQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6bWVudUxpc3RCdXR0b25XaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpkZXRlcm1pbmVD
bGFzc2ljU3RhdGUpOgorCiAyMDEyLTA3LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIzMzM5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyMzM0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzAwLDYgKzE3MDAsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAKICAgICBwbGF0Zm9y
bS9LaWxsUmluZ05vbmUuY3BwCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCisgICAgcGxhdGZv
cm0vTGF5b3V0VGVzdE1vZGUuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcAogICAgIHBsYXRm
b3JtL0xlbmd0aEJveC5jcHAKICAgICBwbGF0Zm9ybS9MaW5rSGFzaC5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIzMzQ4KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzUwOCw2ICszNTA4LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
aW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9s
aW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKQEAgLTYyNjgsNCAr
NjI3MCwzIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9xdW90
YS9TdG9yYWdlSW5mb1VzYWdlQ2FsbGJhY2suaWRsCiAKIGVuZGlmICAjIEVORCBFTkFCTEVfUVVP
VEEKLQpJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjMzNDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC05OTcsNiArOTk3LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vS1VSTC5j
cHAgXAogICAgIHBsYXRmb3JtL0xhbmd1YWdlLmNwcCBcCisgICAgcGxhdGZvcm0vTGF5b3V0VGVz
dE1vZGUuY3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguY3BwIFwKICAgICBwbGF0Zm9ybS9MZW5n
dGhCb3guY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyMzM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjg3LDYgKzI4Nyw3IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vS1VSTC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9LVVJMSGFzaC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9MYW5ndWFnZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9MYXlv
dXRUZXN0TW9kZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9MZW5ndGguaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vTGVuZ3RoQm94LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xlbmd0
aFNpemUuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTIzMzQ4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4MTYzLDYgKzI4MTYzLDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXExheW91dFRlc3RNb2RlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGF5b3V0VGVzdE1vZGUuaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGVuZ3RoLmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjMzNDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU4OTUsNiArNTg5NSw3IEBACiAJCUQ2MzBFMkFDMTQ5QkYzNDQwMDVCMkY5NCAvKiBTdGF0
c0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5NCAvKiBTdGF0c0NvdW50ZXIuaCAqLzsgfTsKIAkJRDYz
MEUyQUMxNDlCRjM0NDAwNUIyRjk1IC8qIE1lbW9yeVVzYWdlU3VwcG9ydC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDYzMEUyQUIxNDlCRjM0NDAwNUIy
Rjk1IC8qIE1lbW9yeVVzYWdlU3VwcG9ydC5oICovOyB9OwogCQlENjMwRTJBQzE0OUJGMzQ0MDA1
QjJGOTYgLyogRXZlbnRUcmFjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5NiAvKiBFdmVudFRyYWNlci5oICov
OyB9OworCQlENjMwRTJBQzE0OUJGMzQ0MDA1QjJGOTMgLyogTGF5b3V0VGVzdE1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ2MzBFMkFCMTQ5QkYz
NDQwMDVCMkY5NyAvKiBMYXlvdXRUZXN0TW9kZS5oICovOyB9OwogCQlENkUyNzZBRjE0NjM3NDU1
MDAxRDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENkUyNzZBRDE0NjM3NDU1MDAxRDI4
MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgKi87IH07CiAJCUQ2RTI3NkIw
MTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENkUyNzZBRTE0NjM3NDU1
MDAxRDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oICovOyB9OwogCQlENkU1
MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDZFNTI4QTEx
NDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCAqLzsg
fTsKQEAgLTU5MDMsNiArNTkwNCw3IEBACiAJCUQ2RkRBRUYzMTQ5QzA2MTkwMDM3QjFFMiAvKiBT
dGF0c0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDZGREFFRjIxNDlDMDYxOTAwMzdCMUUyIC8qIFN0YXRzQ291bnRlci5jcHAgKi87IH07
CiAJCUQ2RkRBRUYzMTQ5QzA2MTkwMDM3QjFFMyAvKiBNZW1vcnlVc2FnZVN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDZGREFFRjIxNDlD
MDYxOTAwMzdCMUUzIC8qIE1lbW9yeVVzYWdlU3VwcG9ydC5jcHAgKi87IH07CiAJCUQ2RkRBRUYz
MTQ5QzA2MTkwMDM3QjFFNCAvKiBFdmVudFRyYWNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTQgLyogRXZl
bnRUcmFjZXIuY3BwICovOyB9OworCQlENkZEQUVGMzE0OUMwNjE5MDAzN0IxRTUgLyogTGF5b3V0
VGVzdE1vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDZGREFFRjIxNDlDMDYxOTAwMzdCMUU1IC8qIExheW91dFRlc3RNb2RlLmNwcCAqLzsgfTsK
IAkJRDcwQUQ2NTcxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzBBRDY1NTEzRTEzNDJCMDA1
QjUwQjQgLyogUmVuZGVyUmVnaW9uLmNwcCAqLzsgfTsKIAkJRDcwQUQ2NTgxM0UxMzQyQjAwNUI1
MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRDcwQUQ2NTYxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oICov
OyB9OwogCQlENzJGNkQ3OTE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcyRjZE
NzcxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmNwcCAqLzsgfTsKQEAg
LTEzMTQ2LDYgKzEzMTQ4LDcgQEAKIAkJRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjk0IC8qIFN0YXRz
Q291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0c0NvdW50ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjk1
IC8qIE1lbW9yeVVzYWdlU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZW1vcnlVc2FnZVN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDYz
MEUyQUIxNDlCRjM0NDAwNUIyRjk2IC8qIEV2ZW50VHJhY2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV2ZW50VHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5NyAvKiBIaXN0b2dyYW1TdXBwb3J0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dFRlc3RNb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQ2RTI3NkFEMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlENkUyNzZBRTE0NjM3NDU1MDAxRDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ2RTUy
OEExMTQ5QTkyNkQwMEVGRTFGMyAvKiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzE1NCw2ICsx
MzE1Nyw3IEBACiAJCUQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFFMiAvKiBTdGF0c0NvdW50ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdHNDb3VudGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDZGREFFRjIxNDlDMDYxOTAwMzdCMUUzIC8q
IE1lbW9yeVVzYWdlU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNZW1vcnlVc2FnZVN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTQgLyogRXZlbnRUcmFjZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRUcmFjZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTUgLyogTGF5b3V0VGVzdE1v
ZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0VGVzdE1v
ZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlENzBBRDY1NTEzRTEzNDJCMDA1
QjUwQjQgLyogUmVuZGVyUmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclJlZ2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ3
MEFENjU2MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQ3MkY2RDc3MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG93VGhyZWFkQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU3MSw2ICsyMDU3NSw4
IEBACiAJCQkJMjZBNTAzNEQxNEYwOTgzNjAwQUE3MzBEIC8qIEtVUkxXVEZVUkxJbXBsLmggKi8s
CiAJCQkJRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLywKIAkJCQk4
NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLywKKwkJCQlENkZEQUVGMjE0
OUMwNjE5MDAzN0IxRTUgLyogTGF5b3V0VGVzdE1vZGUuY3BwICovLAorCQkJCUQ2MzBFMkFCMTQ5
QkYzNDQwMDVCMkY5NyAvKiBMYXlvdXRUZXN0TW9kZS5oICovLAogCQkJCUJDRTY1QkU4MEVBQ0RG
MTYwMDdFNDUzMyAvKiBMZW5ndGguY3BwICovLAogCQkJCUJDRTY1QkU5MEVBQ0RGMTYwMDdFNDUz
MyAvKiBMZW5ndGguaCAqLywKIAkJCQkxNDZDQzExMzE1Njk4OEJEMDAxMDlFMzcgLyogTGVuZ3Ro
Qm94LmNwcCAqLywKQEAgLTI0MDcwLDYgKzI0MDc2LDcgQEAKIAkJCQkyOTE3QjU2MzE0NzM0OTZD
MDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTEyNTM4RDQxM0Y5QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQ5MDY2MDcwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlENjMwRTJBQzE0OUJGMzQ0MDA1QjJGOTcgLyogTGF5b3V0VGVzdE1v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJBQ0YyOTAxMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlv
dXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjUwRDkxRTZBRjAwMEY4OUVFIC8q
IExlZ2FjeVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTY1QkVCMEVBQ0RGMTYw
MDdFNDUzMyAvKiBMZW5ndGguaCBpbiBIZWFkZXJzICovLApAQCAtMjczNTIsNiArMjczNTksNyBA
QAogCQkJCTI5MTdCNTY2MTQ3MzQ5OTUwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyTWFj
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMjBBQ0E0MTNGOTk4Q0EwMEZFNEFDNyAvKiBMYXlv
dXRSZXBhaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2
OTk4IC8qIExheW91dFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUQ2RkRBRUYzMTQ5QzA2
MTkwMDM3QjFFNSAvKiBMYXlvdXRUZXN0TW9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJE
RDhGNDBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUIyNDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1QkVBMEVBQ0RGMTYwMDdFNDUzMyAvKiBMZW5ndGgu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMTIzMzQ4
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgZGV2aWNlTW90aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlTW90aW9uRW5h
YmxlZDsgfQogICAgIHN0YXRpYyBib29sIGRldmljZU1vdGlvbkV2ZW50RW5hYmxlZCgpIHsgcmV0
dXJuIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIG9uZGV2aWNlbW90
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQotICAgIAorCiAg
ICAgc3RhdGljIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgc3RhdGlj
IGJvb2wgZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCBkZXZpY2VPcmllbnRhdGlvbkV2ZW50RW5h
YmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RN
b2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBMYXlvdXRUZXN0TW9kZTo6aXNM
YXlvdXRUZXN0TW9kZUVuYWJsZWQgPSBmYWxzZTsKKworYm9vbCBMYXlvdXRUZXN0TW9kZTo6bGF5
b3V0VGVzdE1vZGUoKQoreworICAgIHJldHVybiBpc0xheW91dFRlc3RNb2RlRW5hYmxlZDsKK30K
Kwordm9pZCBMYXlvdXRUZXN0TW9kZTo6c2V0TGF5b3V0VGVzdE1vZGUoYm9vbCB2YWx1ZSkKK3sK
KyAgICBpc0xheW91dFRlc3RNb2RlRW5hYmxlZCA9IHZhbHVlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFRlc3RNb2RlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMYXlvdXRUZXN0TW9kZV9oCisj
ZGVmaW5lIExheW91dFRlc3RNb2RlX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBM
YXlvdXRUZXN0TW9kZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgbGF5b3V0VGVzdE1vZGUo
KTsKKyAgICBzdGF0aWMgdm9pZCBzZXRMYXlvdXRUZXN0TW9kZShib29sKTsKK3ByaXZhdGU6Cisg
ICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCisgICAgTGF5b3V0VGVzdE1vZGUoKSB7IH0KKworICAg
IHN0YXRpYyBib29sIGlzTGF5b3V0VGVzdE1vZGVFbmFibGVkOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGF5b3V0VGVzdE1vZGVfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlz
aW9uIDEyMzM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIG5vdGlmeUpTT3V0T2ZNZW1vcnkoRnJhbWUqKTsKICAgICBzdGF0aWMgYm9v
bCBhbGxvd1NjcmlwdERlc3BpdGVTZXR0aW5ncyhjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CiAK
LSAgICAvLyBMYXlvdXRUZXN0TW9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBib29sIGxheW91dFRlc3RNb2RlKCk7Ci0K
ICAgICAvLyBQbHVnaW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyBib29sIHBsdWdpbnMoYm9vbCByZWZyZXNo
LCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0aWMgTlBPYmplY3QqIHBsdWdpblNjcmlw
dGFibGVPYmplY3QoV2lkZ2V0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJv
aWQuY3BwCShyZXZpc2lvbiAxMjMzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJU
aGVtZUNocm9taXVtQW5kcm9pZC5oIgogCisjaW5jbHVkZSAiTGF5b3V0VGVzdE1vZGUuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCkBAIC00Nyw3ICs0OCw3IEBAIFNj
cm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGgKIAogaW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1BbmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNp
emUgY29udHJvbFNpemUpCiB7Ci0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1v
ZGUoKSkgeworICAgIGlmIChMYXlvdXRUZXN0TW9kZTo6bGF5b3V0VGVzdE1vZGUoKSkgewogICAg
ICAgICAvLyBNYXRjaCBDaHJvbWl1bS1MaW51eCBmb3IgRHVtcFJlbmRlclRyZWUsIHNvIHRoZSBs
YXlvdXQgdGVzdCByZXN1bHRzCiAgICAgICAgIC8vIGNhbiBiZSBzaGFyZWQuIFRoZSB3aWR0aCBv
ZiBzY3JvbGxiYXIgZG93biBhcnJvdyBzaG91bGQgZXF1YWwgdGhlCiAgICAgICAgIC8vIHdpZHRo
IG9mIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIuCkBAIC02MSw3ICs2Miw3IEBAIHZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW4KIHsKICAgICAvLyBQYWludCBibGFjayBiYWNr
Z3JvdW5kIGluIER1bXBSZW5kZXJUcmVlLCBvdGhlcndpc2UgdGhlIHBpeGVscyBpbiB0aGUgc2Ny
b2xsYmFyIGFyZWEgZGVwZW5kCiAgICAgLy8gb24gdGhlaXIgcHJldmlvdXMgc3RhdGUsIHdoaWNo
IG1ha2VzIHRoZSBkdW1wZWQgcmVzdWx0IHVuZGV0ZXJtaW5lZC4KLSAgICBpZiAoUGxhdGZvcm1T
dXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgIGlmIChMYXlvdXRUZXN0TW9kZTo6bGF5b3V0
VGVzdE1vZGUoKSkKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc2Nyb2xsYmFyLT5mcmFtZVJl
Y3QoKSwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDEyMzM0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8dnNzdHlsZS5oPgogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdE1vZGUuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCkBAIC02MSw3ICs2Miw3IEBAIGlu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzY3JvbGxiYXIKIHsKICAgICBzdGF0aWMgaW50
IHRoaWNrbmVzczsKICAgICBpZiAoIXRoaWNrbmVzcykgewotICAgICAgICBpZiAoUGxhdGZvcm1T
dXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgICAgICBpZiAoTGF5b3V0VGVzdE1vZGU6Omxh
eW91dFRlc3RNb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4ga01hY1Njcm9sbGJhclNpemVbY29u
dHJvbFNpemVdOwogICAgICAgICB0aGlja25lc3MgPSBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYVlND
Uk9MTCk7CiAgICAgfQpAQCAtMjU2LDcgKzI1Nyw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbjo6YnV0dG8KICAgICAvLyB0ZXN0IG1vZGUgc28gdGhhdCBzaG91bGQgYmUgZW5v
dWdoIHRvIHJlc3VsdCBpbiByZXBlYXRhYmxlIHJlc3VsdHMsIGJ1dAogICAgIC8vIHByZXNlcnZp
bmcgdGhpcyBoYWNrIGF2b2lkcyBoYXZpbmcgdG8gcmViYXNlbGluZSBwaXhlbCB0ZXN0cy4KICAg
ICBjb25zdCBpbnQga0xheW91dFRlc3RNb2RlR2lydGggPSAxNzsKLSAgICBpbnQgZ2lydGggPSBQ
bGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkgPyBrTGF5b3V0VGVzdE1vZGVHaXJ0aCA6
IHRoaWNrbmVzczsKKyAgICBpbnQgZ2lydGggPSBMYXlvdXRUZXN0TW9kZTo6bGF5b3V0VGVzdE1v
ZGUoKSA/IGtMYXlvdXRUZXN0TW9kZUdpcnRoIDogdGhpY2tuZXNzOwogCiAgICAgaWYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGlu
dCB3aWR0aCA9IHNjcm9sbGJhci0+d2lkdGgoKSA8IDIgKiBnaXJ0aCA/IHNjcm9sbGJhci0+d2lk
dGgoKSAvIDIgOiBnaXJ0aDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5j
cHAJKHJldmlzaW9uIDEyMzM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MSArMSwxMSBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBDb21wdXRl
ciwgSW5jLgogICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCkBAIC0xNSw3ICsxNSw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
IAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udFV0aWxzQ2hyb21p
dW1XaW4uaCIKICNpbmNsdWRlICJIV25kREMuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0TW9kZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRh
LmgiCiAjaW5jbHVkZSA8dW5pY29kZS91bmlzZXQuaD4KQEAgLTU1LDEwICs1NiwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogLy8gYXNrZWQgZm9yIGEgQ0pLIGZvbnQgd2l0aCBhIFJvbWFuaXplZCBu
YW1lIHVuZGVyIGEgQ0pLIGxvY2FsZSwKIC8vIHxHZXRUZXh0RmFjZXwgKGFmdGVyIHxDcmVhdGVG
b250KnwpIHJldHVybnMgYSAnYm9ndXMnIHZhbHVlIChlLmcuIEFyaWFsKS4KIC8vIFRoaXMgaXMg
bm90IGNvbnNpc3RlbnQgd2l0aCB3aGF0IE1TRE4gc2F5cyAhIQotLy8gVGhlcmVmb3JlLCBiZWZv
cmUgd2UgY2FsbCB8Q3JlYXRlRm9udCp8LCB3ZSBoYXZlIHRvIG1hcCBhIFJvbWFuaXplZCBuYW1l
IHRvIAotLy8gdGhlIGNvcnJlc3BvbmRpbmcgbmF0aXZlIG5hbWUgdW5kZXIgYSBDSksgbG9jYWxl
IGFuZCB2aWNlIHZlcnNhIAorLy8gVGhlcmVmb3JlLCBiZWZvcmUgd2UgY2FsbCB8Q3JlYXRlRm9u
dCp8LCB3ZSBoYXZlIHRvIG1hcCBhIFJvbWFuaXplZCBuYW1lIHRvCisvLyB0aGUgY29ycmVzcG9u
ZGluZyBuYXRpdmUgbmFtZSB1bmRlciBhIENKSyBsb2NhbGUgYW5kIHZpY2UgdmVyc2EKIC8vIHVu
ZGVyIGEgbm9uLUNKSyBsb2NhbGUuCi0vLyBTZWUgdGhlIGNvcnJlc3BvbmRpbmcgZ2Vja28gYnVn
cyBhdCAKKy8vIFNlZSB0aGUgY29ycmVzcG9uZGluZyBnZWNrbyBidWdzIGF0CiAvLyBodHRwczov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzM5NTIKIC8vIGh0dHBzOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQyNgogc3RhdGljIGJvb2wg
TG9va3VwQWx0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgYWx0TmFtZSkKQEAgLTIw
NiwxMSArMjA3LDExIEBAIHN0YXRpYyBib29sIExvb2t1cEFsdE5hbWUoY29uc3QgU3RyaW5nJgog
ICAgICAgICAgICAgZm9udE5hbWVNYXAtPnNldChTdHJpbmcobmFtZVBhaXJzW2ldLm5hbWUpLCAm
KG5hbWVQYWlyc1tpXS5hbHROYW1lQ29kZXBhZ2UpKTsKICAgICB9CiAKLSAgICBib29sIGlzQXNj
aWkgPSBmYWxzZTsgCisgICAgYm9vbCBpc0FzY2lpID0gZmFsc2U7CiAgICAgU3RyaW5nIG47Ci0g
ICAgLy8gdXNlIHxsb3dlcnwgb25seSBmb3IgQVNDSUkgbmFtZXMgCi0gICAgLy8gRm9yIG5vbi1B
U0NJSSBuYW1lcywgd2UgZG9uJ3Qgd2FudCB0byBpbnZva2UgYW4gZXhwZW5zaXZlIAotICAgIC8v
IGFuZCB1bm5lY2Vzc2FyeSB8bG93ZXJ8LiAKKyAgICAvLyB1c2UgfGxvd2VyfCBvbmx5IGZvciBB
U0NJSSBuYW1lcworICAgIC8vIEZvciBub24tQVNDSUkgbmFtZXMsIHdlIGRvbid0IHdhbnQgdG8g
aW52b2tlIGFuIGV4cGVuc2l2ZQorICAgIC8vIGFuZCB1bm5lY2Vzc2FyeSB8bG93ZXJ8LgogICAg
IGlmIChuYW1lLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKICAgICAgICAgaXNBc2NpaSA9IHRydWU7
CiAgICAgICAgIG4gPSBuYW1lLmxvd2VyKCk7CkBAIC0yNTcsNyArMjU4LDcgQEAgc3RhdGljIEhG
T05UIGNyZWF0ZUZvbnRJbmRpcmVjdEFuZEdldFdpbgogLy8gVGhpcyBtYXBzIGZvbnQgZmFtaWx5
IG5hbWVzIHRvIHRoZWlyIHJlcGVydG9pcmVzIG9mIHN1cHBvcnRlZCBVbmljb2RlCiAvLyBjaGFy
YWN0ZXJzLiBCZWNhdXNlIGl0J3MgZmFtaWx5IG5hbWVzIHJhdGhlciB0aGFuIGZvbnQgZmFjZXMg
d2UgdXNlCiAvLyBhcyBrZXlzLCB0aGVyZSBtaWdodCBiZSBlZGdlIGNhc2VzIHdoZXJlIG9uZSBm
YWNlIG9mIGEgZm9udCBmYW1pbHkKLS8vIGhhcyBhIGRpZmZlcmVudCByZXBlcnRvaXJlIGZyb20g
YW5vdGhlciBmYWNlIG9mIHRoZSBzYW1lIGZhbWlseS4gCisvLyBoYXMgYSBkaWZmZXJlbnQgcmVw
ZXJ0b2lyZSBmcm9tIGFub3RoZXIgZmFjZSBvZiB0aGUgc2FtZSBmYW1pbHkuCiB0eXBlZGVmIEhh
c2hNYXA8Y29uc3Qgd2NoYXJfdCosIGljdTo6VW5pY29kZVNldCo+IEZvbnRDbWFwQ2FjaGU7CiAK
IHN0YXRpYyBib29sIGZvbnRDb250YWluc0NoYXJhY3Rlcihjb25zdCBGb250UGxhdGZvcm1EYXRh
KiBmb250RGF0YSwKQEAgLTI3NSwxMCArMjc2LDEwIEBAIHN0YXRpYyBib29sIGZvbnRDb250YWlu
c0NoYXJhY3Rlcihjb25zdAogICAgICAgICBmb250Q21hcENhY2hlID0gbmV3IEZvbnRDbWFwQ2Fj
aGU7CiAKICAgICBIYXNoTWFwPGNvbnN0IHdjaGFyX3QqLCBpY3U6OlVuaWNvZGVTZXQqPjo6aXRl
cmF0b3IgaXQgPSBmb250Q21hcENhY2hlLT5maW5kKGZhbWlseSk7Ci0gICAgaWYgKGl0ICE9IGZv
bnRDbWFwQ2FjaGUtPmVuZCgpKSAKKyAgICBpZiAoaXQgIT0gZm9udENtYXBDYWNoZS0+ZW5kKCkp
CiAgICAgICAgIHJldHVybiBpdC0+c2Vjb25kLT5jb250YWlucyhjaGFyYWN0ZXIpOwotICAgIAot
ICAgIEhGT05UIGhmb250ID0gZm9udERhdGEtPmhmb250KCk7IAorCisgICAgSEZPTlQgaGZvbnQg
PSBmb250RGF0YS0+aGZvbnQoKTsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xk
Rm9udCA9IHN0YXRpY19jYXN0PEhGT05UPihTZWxlY3RPYmplY3QoaGRjLCBoZm9udCkpOwogICAg
IGludCBjb3VudCA9IEdldEZvbnRVbmljb2RlUmFuZ2VzKGhkYywgMCk7CkBAIC0yOTQsNyArMjk1
LDcgQEAgc3RhdGljIGJvb2wgZm9udENvbnRhaW5zQ2hhcmFjdGVyKGNvbnN0CiAgICAgZ2x5cGhz
ZXRCdWZmZXIucmVzaXplKEdldEZvbnRVbmljb2RlUmFuZ2VzKGhkYywgMCkpOwogICAgIEdMWVBI
U0VUKiBnbHlwaHNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xZUEhTRVQqPihnbHlwaHNldEJ1ZmZl
ci5kYXRhKCkpOwogICAgIC8vIEluIGFkZGl0aW9uLCByZWZlcmluZyB0byB0aGUgT1MvMiB0YWJs
ZSBhbmQgY29udmVydGluZyB0aGUgY29kZXBhZ2UgbGlzdAotICAgIC8vIHRvIHRoZSBjb3ZlcmFn
ZSBtYXAgbWlnaHQgYmUgZmFzdGVyLiAKKyAgICAvLyB0byB0aGUgY292ZXJhZ2UgbWFwIG1pZ2h0
IGJlIGZhc3Rlci4KICAgICBjb3VudCA9IEdldEZvbnRVbmljb2RlUmFuZ2VzKGhkYywgZ2x5cGhz
ZXQpOwogICAgIEFTU0VSVChjb3VudCA+IDApOwogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZv
bnQpOwpAQCAtMzA1LDE0ICszMDYsMTQgQEAgc3RhdGljIGJvb2wgZm9udENvbnRhaW5zQ2hhcmFj
dGVyKGNvbnN0CiAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgaWN1OjpVbmljb2RlU2V0KiBjbWFw
ID0gbmV3IGljdTo6VW5pY29kZVNldDsKICAgICB3aGlsZSAoaSA8IGdseXBoc2V0LT5jUmFuZ2Vz
KSB7Ci0gICAgICAgIFdDSEFSIHN0YXJ0ID0gZ2x5cGhzZXQtPnJhbmdlc1tpXS53Y0xvdzsgCisg
ICAgICAgIFdDSEFSIHN0YXJ0ID0gZ2x5cGhzZXQtPnJhbmdlc1tpXS53Y0xvdzsKICAgICAgICAg
Y21hcC0+YWRkKHN0YXJ0LCBzdGFydCArIGdseXBoc2V0LT5yYW5nZXNbaV0uY0dseXBocyAtIDEp
OwogICAgICAgICBpKys7CiAgICAgfQogICAgIGNtYXAtPmZyZWV6ZSgpOwogICAgIC8vIFdlIGRv
bid0IGxvd2VyY2FzZSB8ZmFtaWx5fCBiZWNhdXNlIGFsbCBvZiB0aGVtIGFyZSB1bmRlciBvdXIg
Y29udHJvbAotICAgIC8vIGFuZCB0aGV5J3JlIGFscmVhZHkgbG93ZXJjYXNlZC4gCi0gICAgZm9u
dENtYXBDYWNoZS0+c2V0KGZhbWlseSwgY21hcCk7IAorICAgIC8vIGFuZCB0aGV5J3JlIGFscmVh
ZHkgbG93ZXJjYXNlZC4KKyAgICBmb250Q21hcENhY2hlLT5zZXQoZmFtaWx5LCBjbWFwKTsKICAg
ICByZXR1cm4gY21hcC0+Y29udGFpbnMoY2hhcmFjdGVyKTsKIH0KIApAQCAtMzU0LDcgKzM1NSw3
IEBAIHN0YXRpYyB2b2lkIEZpbGxMb2dGb250KGNvbnN0IEZvbnREZXNjcmkKICAgICB3aW5mb250
LT5sZlN0cmlrZU91dCA9IGZhbHNlOwogICAgIHdpbmZvbnQtPmxmQ2hhclNldCA9IERFRkFVTFRf
Q0hBUlNFVDsKICAgICB3aW5mb250LT5sZk91dFByZWNpc2lvbiA9IE9VVF9UVF9PTkxZX1BSRUNJ
UzsKLSAgICB3aW5mb250LT5sZlF1YWxpdHkgPSBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RN
b2RlKCkgPyBOT05BTlRJQUxJQVNFRF9RVUFMSVRZIDogREVGQVVMVF9RVUFMSVRZOyAvLyBIb25v
ciB1c2VyJ3MgZGVza3RvcCBzZXR0aW5ncy4KKyAgICB3aW5mb250LT5sZlF1YWxpdHkgPSBMYXlv
dXRUZXN0TW9kZTo6bGF5b3V0VGVzdE1vZGUoKSA/IE5PTkFOVElBTElBU0VEX1FVQUxJVFkgOiBE
RUZBVUxUX1FVQUxJVFk7IC8vIEhvbm9yIHVzZXIncyBkZXNrdG9wIHNldHRpbmdzLgogICAgIHdp
bmZvbnQtPmxmUGl0Y2hBbmRGYW1pbHkgPSBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENBUkU7CiAg
ICAgd2luZm9udC0+bGZJdGFsaWMgPSBmb250RGVzY3JpcHRpb24uaXRhbGljKCk7CiAgICAgd2lu
Zm9udC0+bGZXZWlnaHQgPSB0b0dESUZvbnRXZWlnaHQoZm9udERlc2NyaXB0aW9uLndlaWdodCgp
KTsKQEAgLTQzMyw3ICs0MzQsNyBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpn
ZXRGb250CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCksICZjLCAmc2Ny
aXB0KTsKICAgICBGb250UGxhdGZvcm1EYXRhKiBkYXRhID0gMDsKICAgICBpZiAoZmFtaWx5KQot
ICAgICAgICBkYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlw
dGlvbigpLCAgQXRvbWljU3RyaW5nKGZhbWlseSwgd2NzbGVuKGZhbWlseSkpLCBmYWxzZSk7IAor
ICAgICAgICBkYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlw
dGlvbigpLCAgQXRvbWljU3RyaW5nKGZhbWlseSwgd2NzbGVuKGZhbWlseSkpLCBmYWxzZSk7CiAK
ICAgICAvLyBMYXN0IHJlc29ydCBmb250IGxpc3QgOiBQYW5Vbmljb2RlLiBDSksgZm9udHMgaGF2
ZSBhIHByZXR0eQogICAgIC8vIGxhcmdlIHJlcGVydG9pcmUuIEV2ZW50dWFsbHksIHdlIG5lZWQg
dG8gc2NhbiBhbGwgdGhlIGZvbnRzCkBAIC00OTIsNyArNDkzLDcgQEAgY29uc3QgU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udAogICAgIC8vIHdhcnJhbnQgYW4gYWRkaXRpb25hbCAo
cmVhbCBjb3ZlcmFnZSkgY2hlY2sgd2l0aCBmb250Q290YWluc0NoYXJhY3Rlci4KICAgICBpbnQg
aTsKICAgICBmb3IgKGkgPSAwOyAoIWRhdGEgfHwgIWZvbnRDb250YWluc0NoYXJhY3RlcihkYXRh
LCBmYW1pbHksIGMpKSAmJiBpIDwgbnVtRm9udHM7ICsraSkgewotICAgICAgICBmYW1pbHkgPSBw
YW5VbmlGb250c1tpXTsgCisgICAgICAgIGZhbWlseSA9IHBhblVuaUZvbnRzW2ldOwogICAgICAg
ICBkYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigp
LCBBdG9taWNTdHJpbmcoZmFtaWx5LCB3Y3NsZW4oZmFtaWx5KSkpOwogICAgIH0KICAgICAvLyBX
aGVuIGktdGggZm9udCAoMC1iYXNlKSBpbiB8cGFuVW5pRm9udHN8IGNvbnRhaW5zIGEgY2hhcmFj
dGVyIGFuZApAQCAtNjAzLDggKzYwNCw4IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFAKICAgICBMT0dGT05UIHdpbmZvbnQgPSB7MH07CiAgICAgRmlsbExvZ0ZvbnQo
Zm9udERlc2NyaXB0aW9uLCAmd2luZm9udCk7CiAKLSAgICAvLyBXaW5kb3dzIHdpbGwgYWx3YXlz
IGdpdmUgdXMgYSB2YWxpZCBwb2ludGVyIGhlcmUsIGV2ZW4gaWYgdGhlIGZhY2UgbmFtZSAKLSAg
ICAvLyBpcyBub24tZXhpc3RlbnQuICBXZSBoYXZlIHRvIGRvdWJsZS1jaGVjayBhbmQgc2VlIGlm
IHRoZSBmYW1pbHkgbmFtZSB3YXMgCisgICAgLy8gV2luZG93cyB3aWxsIGFsd2F5cyBnaXZlIHVz
IGEgdmFsaWQgcG9pbnRlciBoZXJlLCBldmVuIGlmIHRoZSBmYWNlIG5hbWUKKyAgICAvLyBpcyBu
b24tZXhpc3RlbnQuIFdlIGhhdmUgdG8gZG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIGZhbWls
eSBuYW1lIHdhcwogICAgIC8vIHJlYWxseSB1c2VkLgogICAgIFN0cmluZyB3aW5OYW1lOwogICAg
IEhGT05UIGhmb250ID0gY3JlYXRlRm9udEluZGlyZWN0QW5kR2V0V2luTmFtZShmYW1pbHksICZ3
aW5mb250LCAmd2luTmFtZSk7CkBAIC02MTQsMTUgKzYxNSwxNCBAQCBGb250UGxhdGZvcm1EYXRh
KiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdXNl
IHByZWRlZmluZWQgZm9udHMgImd1YXJhbnRlZWQiIHRvIGV4aXN0CiAgICAgLy8gd2hlbiB3ZSdy
ZSBydW5uaW5nIGluIGxheW91dC10ZXN0IG1vZGU/CiAgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHksIHdpbk5hbWUpKSB7Ci0gICAgICAgIC8vIEZvciBDSksgZm9udHMgd2l0aCBib3Ro
IEVuZ2xpc2ggYW5kIG5hdGl2ZSBuYW1lcywgCisgICAgICAgIC8vIEZvciBDSksgZm9udHMgd2l0
aCBib3RoIEVuZ2xpc2ggYW5kIG5hdGl2ZSBuYW1lcywKICAgICAgICAgLy8gR2V0VGV4dEZhY2Ug
cmV0dXJucyBhIG5hdGl2ZSBuYW1lIHVuZGVyIHRoZSBmb250J3MgImxvY2FsZSIKLSAgICAgICAg
Ly8gYW5kIGFuIEVuZ2xpc2ggbmFtZSB1bmRlciBvdGhlciBsb2NhbGVzIHJlZ2FyZGxlc3Mgb2Yg
CisgICAgICAgIC8vIGFuZCBhbiBFbmdsaXNoIG5hbWUgdW5kZXIgb3RoZXIgbG9jYWxlcyByZWdh
cmRsZXNzIG9mCiAgICAgICAgIC8vIGxmRmFjZU5hbWUgZmllbGQgb2YgTE9HRk9OVC4gQXMgYSBy
ZXN1bHQsIHdlIG5lZWQgdG8gY2hlY2sKICAgICAgICAgLy8gaWYgYSBmb250IGhhcyBhbiBhbHRl
cm5hdGUgbmFtZS4gSWYgdGhlcmUgaXMsIHdlIG5lZWQgdG8KICAgICAgICAgLy8gY29tcGFyZSBp
dCB3aXRoIHdoYXQncyByZXF1ZXN0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgogICAgICAgICBTdHJp
bmcgYWx0TmFtZTsKLSAgICAgICAgaWYgKCFMb29rdXBBbHROYW1lKGZhbWlseSwgYWx0TmFtZSkg
fHwgCi0gICAgICAgICAgICAhZXF1YWxJZ25vcmluZ0Nhc2UoYWx0TmFtZSwgd2luTmFtZSkpIHsK
KyAgICAgICAgaWYgKCFMb29rdXBBbHROYW1lKGZhbWlseSwgYWx0TmFtZSkgfHwgIWVxdWFsSWdu
b3JpbmdDYXNlKGFsdE5hbWUsIHdpbk5hbWUpKSB7CiAgICAgICAgICAgICBEZWxldGVPYmplY3Qo
aGZvbnQpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkocmV2aXNpb24gMTIzMzQ4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMiwxMSArMiwxMSBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDgsIDIwMDksIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFu
eSAxMDAsIEluYy4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICog
bWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE2LDcg
KzE2LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzUsMTIgKzM1LDEyIEBACiAKICNp
ZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIk9wZW5UeXBlVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdXBwb3J0LmgiCiAjZWxpZiBPUyhVTklYKQogI2luY2x1ZGUgIlNrU3RyZWFtLmgi
CiAjZW5kaWYKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJMYXlv
dXRUZXN0TW9kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3Bl
blR5cGVTYW5pdGl6ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTgzLDcgKzgz
LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOgogICAgICAgICAg
ICBzaXplb2YobG9nRm9udC5sZkZhY2VOYW1lWzBdKSAqICgxICsgbV9uYW1lLmxlbmd0aCgpKSk7
CiAKICAgICAvLyBGSVhNRTogYWxtb3N0IGlkZW50aWNhbCB0byBGaWxsTG9nRm9udCBpbiBGb250
Q2FjaGVXaW4uY3BwLgotICAgIC8vIE5lZWQgdG8gcmVmYWN0b3IuIAorICAgIC8vIE5lZWQgdG8g
cmVmYWN0b3IuCiAgICAgbG9nRm9udC5sZkhlaWdodCA9IC1zaXplOwogICAgIGxvZ0ZvbnQubGZX
aWR0aCA9IDA7CiAgICAgbG9nRm9udC5sZkVzY2FwZW1lbnQgPSAwOwpAQCAtOTIsNyArOTIsNyBA
QCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6CiAgICAgbG9nRm9udC5s
ZlN0cmlrZU91dCA9IGZhbHNlOwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVMVF9DSEFS
U0VUOwogICAgIGxvZ0ZvbnQubGZPdXRQcmVjaXNpb24gPSBPVVRfVFRfT05MWV9QUkVDSVM7Ci0g
ICAgbG9nRm9udC5sZlF1YWxpdHkgPSBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkg
PworICAgIGxvZ0ZvbnQubGZRdWFsaXR5ID0gTGF5b3V0VGVzdE1vZGU6OmxheW91dFRlc3RNb2Rl
KCkgPwogICAgICAgICAgICAgICAgICAgICAgICAgTk9OQU5USUFMSUFTRURfUVVBTElUWSA6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1FVQUxJVFk7IC8vIEhvbm9yIHVzZXIncyBk
ZXNrdG9wIHNldHRpbmdzLgogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IERFRkFVTFRf
UElUQ0ggfCBGRl9ET05UQ0FSRTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvRm9udFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvRm9udFNraWEuY3BwCShyZXZpc2lvbiAxMjMzNDgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRTa2lhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMSwxMCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQpAQCAtMTQsNyArMTQsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAq
CiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zMyw4ICsz
Myw4IEBACiAKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RNb2RlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIlNp
bXBsZUZvbnREYXRhLmgiCiAKICNpbmNsdWRlICJTa0NhbnZhcy5oIgpAQCAtODMsNyArODMsNyBA
QCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnCiAKICAgICBib29sIHNo
b3VsZFNtb290aEZvbnRzID0gdHJ1ZTsKICAgICBib29sIHNob3VsZEFudGlhbGlhcyA9IHRydWU7
Ci0gICAgCisKICAgICBzd2l0Y2ggKGZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSkg
ewogICAgIGNhc2UgQW50aWFsaWFzZWQ6CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CkBAIC05NiwxMCArOTYsMTAgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogZwogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1dG9TbW9vdGhpbmc6CiAgICAgICAg
IC8vIEZvciB0aGUgQXV0b1Ntb290aCBjYXNlLCBkb24ndCBkbyBhbnl0aGluZyEgS2VlcCB0aGUg
ZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgYnJlYWs7IAorICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgCi0gICAgaWYgKCFzaG91bGRVc2VTbW9vdGhpbmcoKSB8fCBQbGF0Zm9ybVN1cHBvcnQ6
OmxheW91dFRlc3RNb2RlKCkpCisKKyAgICBpZiAoIXNob3VsZFVzZVNtb290aGluZygpIHx8IExh
eW91dFRlc3RNb2RlOjpsYXlvdXRUZXN0TW9kZSgpKQogICAgICAgICBzaG91bGRTbW9vdGhGb250
cyA9IGZhbHNlOwogCiAgICAgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzID0gZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCShyZXZpc2lvbiAxMjMzNDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU1NWYWx1
ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0TW9k
ZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5o
IgogI2luY2x1ZGUgIlJlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5oIgpAQCAtNTYsNyArNTcs
NyBAQCBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZDo6flJlbmRlclRoZW1lCiAKIENvbG9yIFJl
bmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29u
c3QKIHsKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpICYmIGNzc1Zh
bHVlSWQgPT0gQ1NTVmFsdWVCdXR0b25mYWNlKSB7CisgICAgaWYgKExheW91dFRlc3RNb2RlOjps
YXlvdXRUZXN0TW9kZSgpICYmIGNzc1ZhbHVlSWQgPT0gQ1NTVmFsdWVCdXR0b25mYWNlKSB7CiAg
ICAgICAgIC8vIE1hdGNoIENocm9taXVtIExpbnV4JyBidXR0b24gY29sb3IgaW4gbGF5b3V0IHRl
c3RzLgogICAgICAgICBzdGF0aWMgY29uc3QgQ29sb3IgbGludXhCdXR0b25HcmF5Q29sb3IoMHhm
ZmRkZGRkZCk7CiAgICAgICAgIHJldHVybiBsaW51eEJ1dHRvbkdyYXlDb2xvcjsKQEAgLTc3LDcg
Kzc4LDcgQEAgU3RyaW5nIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpleHRyYQogCiB2b2lk
IFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKLSAg
ICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKSB7CisgICAgaWYgKExheW91
dFRlc3RNb2RlOjpsYXlvdXRUZXN0TW9kZSgpKSB7CiAgICAgICAgIC8vIE1hdGNoIENocm9taXVt
IExpbnV4IHNwaW4gYnV0dG9uIHN0eWxlIGluIGxheW91dCB0ZXN0cy4KICAgICAgICAgLy8gRklY
TUU6IENvbnNpZGVyIHJlbW92aW5nIHRoZSBjb25kaXRpb25hbCBpZiBhIGZ1dHVyZSBBbmRyb2lk
IHRoZW1lIG1hdGNoZXMgdGhpcy4KICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBw
b3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydElubmVyU3BpbkJ1dHRv
bik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYy5tbQkocmV2aXNpb24gMTIzMzQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxLDEwICsy
MSwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkNhbGVuZGFyUGlja2VyTWFj
LmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0TW9kZS5oIgogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJSZW5kZXJUaGVtZUNocm9taXVtTWFjLmgiCiAjaW1w
b3J0ICJQYWludEluZm8uaCIKLSNpbXBvcnQgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2ltcG9ydCAi
UmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0ICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgpAQCAtODAsNyArODAs
NyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnN1cHBvcnRzRGF0CiAKIGJvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bU1hYzo6dXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoKSBjb25zdAog
ewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCk7CisgICAgcmV0
dXJuIExheW91dFRlc3RNb2RlOjpsYXlvdXRUZXN0TW9kZSgpOwogfQogCiBOU1ZpZXcqIFJlbmRl
clRoZW1lQ2hyb21pdW1NYWM6OmRvY3VtZW50Vmlld0ZvcihSZW5kZXJPYmplY3QqKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bVNraWEuY3BwCShyZXZpc2lvbiAxMjMzNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsy
OSw5IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdE1vZGUuaCIKICNp
bmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNr
aWEuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJNZWRpYUNvbnRy
b2xzQ2hyb21pdW0uaCIKQEAgLTE2MCw3ICsxNjAsNyBAQCBkb3VibGUgUmVuZGVyVGhlbWVDaHJv
bWl1bVNraWE6OmNhcmV0QmxpCiB7CiAgICAgLy8gRGlzYWJsZSB0aGUgYmxpbmtpbmcgY2FyZXQg
aW4gbGF5b3V0IHRlc3QgbW9kZSwgYXMgaXQgaW50cm9kdWNlcwogICAgIC8vIGEgcmFjZSBjb25k
aXRpb24gZm9yIHRoZSBwaXhlbCB0ZXN0cy4gaHR0cDovL2IvMTE5ODQ0MAotICAgIGlmIChQbGF0
Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkpCisgICAgaWYgKExheW91dFRlc3RNb2RlOjps
YXlvdXRUZXN0TW9kZSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBjYXJldEJs
aW5rSW50ZXJ2YWxJbnRlcm5hbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gMTIzMzQ4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgorI2luY2x1ZGUg
IkxheW91dFRlc3RNb2RlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNp
bmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTI0
Nyw3ICsyNDgsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnN1cHBvcnRzRm9jCiAK
IENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRU
ZXN0TW9kZSgpKQorICAgIGlmIChMYXlvdXRUZXN0TW9kZTo6bGF5b3V0VGVzdE1vZGUoKSkKICAg
ICAgICAgcmV0dXJuIENvbG9yKDB4MDAsIDB4MDAsIDB4ZmYpOyAvLyBSb3lhbCBibHVlLgogICAg
IENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3IoQ09MT1JfSElHSExJR0hUKTsKICAgICByZXR1
cm4gQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNv
bG9yKSwgMHhmZik7CkBAIC0yNTUsNyArMjU2LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbjo6cGxhdGZvcm1BYwogCiBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoUGxh
dGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgIGlmIChMYXlvdXRUZXN0TW9kZTo6
bGF5b3V0VGVzdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIENvbG9yKDB4OTksIDB4OTksIDB4OTkp
OyAvLyBNZWRpdW0gZ3JheS4KICAgICBDT0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKENPTE9S
X0dSQVlURVhUKTsKICAgICByZXR1cm4gQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVl
KGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSwgMHhmZik7CkBAIC0yNjMsNyArMjY0LDcgQEAgQ29s
b3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZvcm1JbgogCiBDb2xvciBSZW5kZXJUaGVt
ZUNocm9taXVtV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0CiB7Ci0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSkKKyAgICBp
ZiAoTGF5b3V0VGVzdE1vZGU6OmxheW91dFRlc3RNb2RlKCkpCiAgICAgICAgIHJldHVybiBDb2xv
cigweGZmLCAweGZmLCAweGNjKTsgLy8gUGFsZSB5ZWxsb3cuCiAgICAgQ09MT1JSRUYgY29sb3Ig
PSBHZXRTeXNDb2xvcihDT0xPUl9ISUdITElHSFRURVhUKTsKICAgICByZXR1cm4gQ29sb3IoR2V0
UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSwgMHhmZik7
CkBAIC0zODQsNyArMzg1LDcgQEAgc3RhdGljIGludCBjc3NWYWx1ZUlkVG9TeXNDb2xvckluZGV4
KGludAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6c3lzdGVtQ29sb3IoaW50IGNzc1Zh
bHVlSWQpIGNvbnN0CiB7CiAgICAgaW50IHN5c0NvbG9ySW5kZXggPSBjc3NWYWx1ZUlkVG9TeXND
b2xvckluZGV4KGNzc1ZhbHVlSWQpOwotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRl
c3RNb2RlKCkgfHwgKHN5c0NvbG9ySW5kZXggPT0gLTEpKQorICAgIGlmIChMYXlvdXRUZXN0TW9k
ZTo6bGF5b3V0VGVzdE1vZGUoKSB8fCAoc3lzQ29sb3JJbmRleCA9PSAtMSkpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CiAKICAgICBDT0xPUlJF
RiBjb2xvciA9IEdldFN5c0NvbG9yKHN5c0NvbG9ySW5kZXgpOwpAQCAtNDc5LDcgKzQ4MCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRTbGlkZXIKIAogc3RhdGljIGludCBt
ZW51TGlzdEJ1dHRvbldpZHRoKCkKIHsKLSAgICBzdGF0aWMgaW50IHdpZHRoID0gUGxhdGZvcm1T
dXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpID8ga1N0YW5kYXJkTWVudUxpc3RCdXR0b25XaWR0aCA6
IEdldFN5c3RlbU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKKyAgICBzdGF0aWMgaW50IHdpZHRoID0g
TGF5b3V0VGVzdE1vZGU6OmxheW91dFRlc3RNb2RlKCkgPyBrU3RhbmRhcmRNZW51TGlzdEJ1dHRv
bldpZHRoIDogR2V0U3lzdGVtTWV0cmljcyhTTV9DWFZTQ1JPTEwpOwogICAgIHJldHVybiB3aWR0
aDsKIH0KIApAQCAtNjAzLDcgKzYwNCw3IEBAIHVuc2lnbmVkIFJlbmRlclRoZW1lQ2hyb21pdW1X
aW46OmRldGVybWkKIAogICAgIC8vIFNvIGFyZSByZWFkb25seSB0ZXh0IGZpZWxkcy4KICAgICBp
ZiAoaXNSZWFkT25seUNvbnRyb2wobykgJiYgKHBhcnQgPT0gVGV4dEZpZWxkUGFydCB8fCBwYXJ0
ID09IFRleHRBcmVhUGFydCB8fCBwYXJ0ID09IFNlYXJjaEZpZWxkUGFydCkpCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7ICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBpZiAocGFydCA9
PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNh
bFBhcnQpIHsKICAgICAgICAgaWYgKCFpc0VuYWJsZWQobykpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gMTIzMzQ5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0yMyAgTWFy
ayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGxheW91dFRlc3RNb2RlIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRy
YWNraW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnNldExheW91dFRlc3RNb2RlKToKKyAgICAgICAgKFdlYktpdDo6bGF5b3V0VGVzdE1v
ZGUpOgorCiAyMDEyLTA3LTIzICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIEJ1aWxkZml4IGZvciBmaXhpbmcgZ2NsaWVudCBvbiB0aGUg
Q2hyb21pdW0gV2luZG93cyBib3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTIzMzQ4KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAy
LDEzICszMDIsNiBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gUGxhdGZvCiAg
ICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5pbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwogfQogCi0vLyBMYXlvdXRUZXN0TW9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpCi17Ci0gICAgcmV0
dXJuIFdlYktpdDo6bGF5b3V0VGVzdE1vZGUoKTsKLX0KLQogLy8gUGx1Z2luIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBib29sIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQ
bHVnaW5JbmZvPiogcmVzdWx0cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YktpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0
LmNwcAkocmV2aXNpb24gMTIzMzQ4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
S2l0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogCisjaW5jbHVkZSAiTGF5b3V0VGVzdE1vZGUuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKQEAgLTgxLDcgKzgyLDYgQEAgc3RhdGljIFdlYlRocmVhZDo6VGFza09i
c2VydmVyKiBzX2VuZE9mVAogc3RhdGljIGJvb2wgc193ZWJLaXRJbml0aWFsaXplZCA9IGZhbHNl
OwogCiBzdGF0aWMgV2ViS2l0UGxhdGZvcm1TdXBwb3J0KiBzX3dlYktpdFBsYXRmb3JtU3VwcG9y
dCA9IDA7Ci1zdGF0aWMgYm9vbCBzX2xheW91dFRlc3RNb2RlID0gZmFsc2U7CiAKIHN0YXRpYyBi
b29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgp
CiB7CkBAIC0xNzYsMTIgKzE3NiwxMiBAQCBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHdlYktpdFBs
YXRmb3JtU3VwCiAKIHZvaWQgc2V0TGF5b3V0VGVzdE1vZGUoYm9vbCB2YWx1ZSkKIHsKLSAgICBz
X2xheW91dFRlc3RNb2RlID0gdmFsdWU7CisgICAgV2ViQ29yZTo6TGF5b3V0VGVzdE1vZGU6OnNl
dExheW91dFRlc3RNb2RlKHZhbHVlKTsKIH0KIAogYm9vbCBsYXlvdXRUZXN0TW9kZSgpCiB7Ci0g
ICAgcmV0dXJuIHNfbGF5b3V0VGVzdE1vZGU7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxheW91dFRl
c3RNb2RlOjpsYXlvdXRUZXN0TW9kZSgpOwogfQogCiB2b2lkIGVuYWJsZUxvZ0NoYW5uZWwoY29u
c3QgY2hhciogbmFtZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153826</attachid>
            <date>2012-07-23 11:56:28 -0700</date>
            <delta_ts>2012-07-23 19:33:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92010-20120723145551.patch</filename>
            <type>text/plain</type>
            <size>42696</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA3LTIzICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
bGF5b3V0VGVzdE1vZGUgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tp
bmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRUZXN0TW9k
ZTo6bGF5b3V0VGVzdE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0VGVzdE1vZGU6OnNl
dExheW91dFRlc3RNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5b3V0VGVzdE1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0VGVzdE1vZGU6OkxheW91dFRlc3RNb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3Jt
U3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6OnNjcm9sbGJhclRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNjcm9sbGJhclRoaWNr
bmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0
b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVD
aHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
b2t1cEFsdE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udENvbnRhaW5zQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGxMb2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvRm9udFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6
ZHJhd0dseXBocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpz
eXN0ZW1Db2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bU1hYzo6dXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6Y2FyZXRCbGlua0ludGVydmFsKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21p
dW1XaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1
bVdpbjo6c3lzdGVtQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6bWVudUxpc3RCdXR0b25XaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpkZXRlcm1pbmVD
bGFzc2ljU3RhdGUpOgorCiAyMDEyLTA3LTIzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lA
Z21haWwuY29tPgogCiAgICAgICAgIFVuaWZ5IG51bVRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQg
YW5kIG5lZWRUb3VjaEV2ZW50cyBpbiB0aGUgY2hyb21lIGNsaWVudApJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNzAwLDYgKzE3MDAsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3Bw
CiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCisgICAgcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUu
Y3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aEJveC5jcHAK
ICAgICBwbGF0Zm9ybS9MaW5rSGFzaC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gMTIzMzU0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzUwOCw2ICszNTA4LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGF5b3V0VGVzdE1vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRU
ZXN0TW9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNl
TGludXguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNl
TGludXguaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKQEAgLTYyNjgsNCArNjI3MCwzIEBAIGRvbV9iaW5k
aW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mb1VzYWdl
Q2FsbGJhY2suaWRsCiAKIGVuZGlmICAjIEVORCBFTkFCTEVfUVVPVEEKLQpJbmRleDogU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCShyZXZpc2lvbiAxMjMzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OTcsNiArOTk3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0v
S2lsbFJpbmdOb25lLmNwcCBcCiAgICAgcGxhdGZvcm0vS1VSTC5jcHAgXAogICAgIHBsYXRmb3Jt
L0xhbmd1YWdlLmNwcCBcCisgICAgcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUuY3BwIFwKICAgICBw
bGF0Zm9ybS9MZW5ndGguY3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwIFwKICAgICBw
bGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMjg3LDYgKzI4Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vS1VSTC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9LVVJMSGFzaC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9M
YW5ndWFnZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL0xheW91dFRlc3RNb2RlLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL0xlbmd0aC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9MZW5ndGhCb3guaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vTGVuZ3RoU2l6ZS5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjMzNTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjgxNjMsNiArMjgxNjMsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGF5b3V0VGVzdE1vZGUuY3BwIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxMYXlv
dXRUZXN0TW9kZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxMZW5ndGguY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTg5NSw2ICs1ODk1LDcgQEAKIAkJRDYzMEUy
QUMxNDlCRjM0NDAwNUIyRjk0IC8qIFN0YXRzQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjk0IC8qIFN0
YXRzQ291bnRlci5oICovOyB9OwogCQlENjMwRTJBQzE0OUJGMzQ0MDA1QjJGOTUgLyogTWVtb3J5
VXNhZ2VTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBENjMwRTJBQjE0OUJGMzQ0MDA1QjJGOTUgLyogTWVtb3J5VXNhZ2VTdXBwb3J0LmggKi87
IH07CiAJCUQ2MzBFMkFDMTQ5QkYzNDQwMDVCMkY5NiAvKiBFdmVudFRyYWNlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDYzMEUyQUIxNDlCRjM0NDAw
NUIyRjk2IC8qIEV2ZW50VHJhY2VyLmggKi87IH07CisJCUQ2MzBFMkFDMTQ5QkYzNDQwMDVCMkY5
MyAvKiBMYXlvdXRUZXN0TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjk3IC8qIExheW91dFRlc3RNb2RlLmgg
Ki87IH07CiAJCUQ2RTI3NkFGMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQ2RTI3NkFEMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmNwcCAqLzsgfTsKIAkJRDZFMjc2QjAxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEQ2RTI3NkFFMTQ2Mzc0NTUwMDFEMjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmggKi87IH07CiAJCUQ2RTUyOEEzMTQ5QTkyNkQwMEVGRTFGMyAvKiBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBENkU1MjhBMTE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAuY3BwICovOyB9OwpAQCAtNTkwMyw2ICs1OTA0LDcgQEAKIAkJRDZG
REFFRjMxNDlDMDYxOTAwMzdCMUUyIC8qIFN0YXRzQ291bnRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTIg
LyogU3RhdHNDb3VudGVyLmNwcCAqLzsgfTsKIAkJRDZGREFFRjMxNDlDMDYxOTAwMzdCMUUzIC8q
IE1lbW9yeVVzYWdlU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTMgLyogTWVtb3J5VXNhZ2VTdXBw
b3J0LmNwcCAqLzsgfTsKIAkJRDZGREFFRjMxNDlDMDYxOTAwMzdCMUU0IC8qIEV2ZW50VHJhY2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ2RkRB
RUYyMTQ5QzA2MTkwMDM3QjFFNCAvKiBFdmVudFRyYWNlci5jcHAgKi87IH07CisJCUQ2RkRBRUYz
MTQ5QzA2MTkwMDM3QjFFNSAvKiBMYXlvdXRUZXN0TW9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTUgLyog
TGF5b3V0VGVzdE1vZGUuY3BwICovOyB9OwogCQlENzBBRDY1NzEzRTEzNDJCMDA1QjUwQjQgLyog
UmVuZGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEQ3MEFENjU1MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uY3BwICovOyB9
OwogCQlENzBBRDY1ODEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENzBBRDY1NjEzRTEzNDJCMDA1
QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggKi87IH07CiAJCUQ3MkY2RDc5MTUzMTU5QTMwMDFFRTQ0
RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBENzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVh
ZENvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTMxNDYsNiArMTMxNDgsNyBAQAogCQlENjMwRTJB
QjE0OUJGMzQ0MDA1QjJGOTQgLyogU3RhdHNDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YXRzQ291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlENjMwRTJBQjE0OUJGMzQ0MDA1QjJGOTUgLyogTWVtb3J5VXNhZ2VTdXBwb3J0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVVzYWdlU3VwcG9ydC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlENjMwRTJBQjE0OUJGMzQ0MDA1QjJGOTYgLyogRXZlbnRU
cmFjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRUcmFjZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjk3IC8q
IEhpc3RvZ3JhbVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5
b3V0VGVzdE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDZFMjc2QUQxNDYz
NzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ2RTI3NkFFMTQ2Mzc0NTUwMDFE
MjgwQSAvKiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDZFNTI4QTExNDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzMTU0LDYgKzEzMTU3LDcgQEAKIAkJRDZGREFFRjIxNDlDMDYxOTAw
MzdCMUUyIC8qIFN0YXRzQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdGF0c0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
NkZEQUVGMjE0OUMwNjE5MDAzN0IxRTMgLyogTWVtb3J5VXNhZ2VTdXBwb3J0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeVVzYWdlU3VwcG9ydC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFFNCAvKiBF
dmVudFRyYWNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVu
dFRyYWNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ2RkRBRUYyMTQ5QzA2
MTkwMDM3QjFFNSAvKiBMYXlvdXRUZXN0TW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMYXlvdXRUZXN0TW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQ3MEFENjU1MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyUmVnaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDcwQUQ2NTYxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRl
clJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJSZWdpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDcyRjZENzcxNTMxNTlBMzAwMUVFNDRF
IC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZsb3dUaHJlYWRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNTcxLDYgKzIwNTc1LDggQEAKIAkJCQkyNkE1MDM0RDE0RjA5ODM2MDBBQTcz
MEQgLyogS1VSTFdURlVSTEltcGwuaCAqLywKIAkJCQlFMTg3NzJGMDEyNkUyNjI5MDAzREQ1ODYg
LyogTGFuZ3VhZ2UuY3BwICovLAogCQkJCTg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5n
dWFnZS5oICovLAorCQkJCUQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFFNSAvKiBMYXlvdXRUZXN0TW9k
ZS5jcHAgKi8sCisJCQkJRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjk3IC8qIExheW91dFRlc3RNb2Rl
LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJ
CQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oICovLAogCQkJCTE0NkNDMTEz
MTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICovLApAQCAtMjQwNzAsNiArMjQwNzYs
NyBAQAogCQkJCTI5MTdCNTYzMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTI1MzhENDEzRjlCNjBBMDAwMjQ3NTQgLyog
TGF5b3V0UmVwYWludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDkwNjYwNzBCRTE0MUQ0MDA5
NTY5OTggLyogTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUQ2MzBFMkFDMTQ5QkYz
NDQwMDVCMkY5NyAvKiBMYXlvdXRUZXN0TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkFDRjI5
MDExM0IyQTBENTAwNzgxRjkwIC8qIExheW91dFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTJERDhGNTBEOTFFNkFGMDAwRjg5RUUgLyogTGVnYWN5V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNzM1Miw2ICsyNzM1OSw3IEBACiAJCQkJMjkxN0I1NjYxNDczNDk5NTAwNTJDOUQw
IC8qIExheWVyRmx1c2hTY2hlZHVsZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEyMEFD
QTQxM0Y5OThDQTAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDkwNjYwNjBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRDZGREFFRjMxNDlDMDYxOTAwMzdCMUU1IC8qIExheW91dFRlc3RNb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkREOEY0MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lX
ZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1
QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNjVCRUEw
RUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCShyZXZpc2lvbiAxMjMzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZXZpY2VNb3Rpb25FbmFibGVkKCkg
eyByZXR1cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgZGV2aWNl
TW90aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CiAg
ICAgc3RhdGljIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VN
b3Rpb25FbmFibGVkOyB9Ci0gICAgCisKICAgICBzdGF0aWMgdm9pZCBzZXREZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCBkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQo
KSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29s
IGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFRlc3RN
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0
TW9kZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRU
ZXN0TW9kZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdE1vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgYm9vbCBzX2lzUnVubmluZ0xheW91dFRlc3QgPSBmYWxzZTsKKworYm9vbCBpc1J1
bm5pbmdMYXlvdXRUZXN0KCkKK3sKKyAgICByZXR1cm4gc19pc1J1bm5pbmdMYXlvdXRUZXN0Owor
fQorCit2b2lkIHNldElzUnVubmluZ0xheW91dFRlc3QoYm9vbCB2YWx1ZSkKK3sKKyAgICBzX2lz
UnVubmluZ0xheW91dFRlc3QgPSB2YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0TW9kZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VGVzdE1vZGUuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGF5b3V0VGVzdE1vZGVfaAorI2RlZmluZSBMYXlv
dXRUZXN0TW9kZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBpc1J1bm5pbmdMYXlv
dXRUZXN0KCk7Cit2b2lkIHNldElzUnVubmluZ0xheW91dFRlc3QoYm9vbCk7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExheW91dFRlc3RNb2RlX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShy
ZXZpc2lvbiAxMjMzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDkgKzEyOCw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBub3RpZnlKU091dE9mTWVtb3J5KEZyYW1lKik7CiAgICAgc3RhdGlj
IGJvb2wgYWxsb3dTY3JpcHREZXNwaXRlU2V0dGluZ3MoY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwp
OwogCi0gICAgLy8gTGF5b3V0VGVzdE1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBzdGF0aWMgYm9vbCBsYXlvdXRUZXN0TW9kZSgp
OwotCiAgICAgLy8gUGx1Z2luIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgYm9vbCBwbHVnaW5zKGJvb2wgcmVm
cmVzaCwgVmVjdG9yPFBsdWdpbkluZm8+Kik7CiAgICAgc3RhdGljIE5QT2JqZWN0KiBwbHVnaW5T
Y3JpcHRhYmxlT2JqZWN0KFdpZGdldCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1B
bmRyb2lkLmNwcAkocmV2aXNpb24gMTIzMzU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCIKIAorI2luY2x1ZGUgIkxheW91dFRlc3RNb2RlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgpAQCAtNDcsNyArNDgsNyBA
QCBTY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoCiAKIGludCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRy
b2xTaXplIGNvbnRyb2xTaXplKQogewotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRl
c3RNb2RlKCkpIHsKKyAgICBpZiAoaXNSdW5uaW5nTGF5b3V0VGVzdCgpKSB7CiAgICAgICAgIC8v
IE1hdGNoIENocm9taXVtLUxpbnV4IGZvciBEdW1wUmVuZGVyVHJlZSwgc28gdGhlIGxheW91dCB0
ZXN0IHJlc3VsdHMKICAgICAgICAgLy8gY2FuIGJlIHNoYXJlZC4gVGhlIHdpZHRoIG9mIHNjcm9s
bGJhciBkb3duIGFycm93IHNob3VsZCBlcXVhbCB0aGUKICAgICAgICAgLy8gd2lkdGggb2YgdGhl
IHZlcnRpY2FsIHNjcm9sbGJhci4KQEAgLTYxLDcgKzYyLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6cGFpbgogewogICAgIC8vIFBhaW50IGJsYWNrIGJhY2tncm91bmQg
aW4gRHVtcFJlbmRlclRyZWUsIG90aGVyd2lzZSB0aGUgcGl4ZWxzIGluIHRoZSBzY3JvbGxiYXIg
YXJlYSBkZXBlbmQKICAgICAvLyBvbiB0aGVpciBwcmV2aW91cyBzdGF0ZSwgd2hpY2ggbWFrZXMg
dGhlIGR1bXBlZCByZXN1bHQgdW5kZXRlcm1pbmVkLgotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6
OmxheW91dFRlc3RNb2RlKCkpCisgICAgaWYgKGlzUnVubmluZ0xheW91dFRlc3QoKSkKICAgICAg
ICAgY29udGV4dC0+ZmlsbFJlY3Qoc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSwgQ29sb3I6OmJsYWNr
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bi5jcHAJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSA8dnNzdHlsZS5oPgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdE1vZGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdXBwb3J0LmgiCkBAIC02MSw3ICs2Miw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtV2luOjpzY3JvbGxiYXIKIHsKICAgICBzdGF0aWMgaW50IHRoaWNrbmVzczsKICAgICBp
ZiAoIXRoaWNrbmVzcykgewotICAgICAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0
TW9kZSgpKQorICAgICAgICBpZiAoaXNSdW5uaW5nTGF5b3V0VGVzdCgpKQogICAgICAgICAgICAg
cmV0dXJuIGtNYWNTY3JvbGxiYXJTaXplW2NvbnRyb2xTaXplXTsKICAgICAgICAgdGhpY2tuZXNz
ID0gR2V0U3lzdGVtTWV0cmljcyhTTV9DWFZTQ1JPTEwpOwogICAgIH0KQEAgLTI1Niw3ICsyNTcs
NyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvCiAgICAgLy8gdGVz
dCBtb2RlIHNvIHRoYXQgc2hvdWxkIGJlIGVub3VnaCB0byByZXN1bHQgaW4gcmVwZWF0YWJsZSBy
ZXN1bHRzLCBidXQKICAgICAvLyBwcmVzZXJ2aW5nIHRoaXMgaGFjayBhdm9pZHMgaGF2aW5nIHRv
IHJlYmFzZWxpbmUgcGl4ZWwgdGVzdHMuCiAgICAgY29uc3QgaW50IGtMYXlvdXRUZXN0TW9kZUdp
cnRoID0gMTc7Ci0gICAgaW50IGdpcnRoID0gUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9k
ZSgpID8ga0xheW91dFRlc3RNb2RlR2lydGggOiB0aGlja25lc3M7CisgICAgaW50IGdpcnRoID0g
aXNSdW5uaW5nTGF5b3V0VGVzdCgpID8ga0xheW91dFRlc3RNb2RlR2lydGggOiB0aGlja25lc3M7
CiAKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIpIHsKICAgICAgICAgaW50IHdpZHRoID0gc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIGdpcnRo
ID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IGdpcnRoOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
YWNoZUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gMTIzMzU0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDExICsxLDExIEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0OgotICogCisgKgogICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE1LDcgKzE1LDcgQEAKICAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRl
ICJGb250VXRpbHNDaHJvbWl1bVdpbi5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgorI2luY2x1ZGUg
IkxheW91dFRlc3RNb2RlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VuaXNldC5oPgpAQCAtNTUs
MTAgKzU2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAvLyBhc2tlZCBmb3IgYSBDSksgZm9udCB3
aXRoIGEgUm9tYW5pemVkIG5hbWUgdW5kZXIgYSBDSksgbG9jYWxlLAogLy8gfEdldFRleHRGYWNl
fCAoYWZ0ZXIgfENyZWF0ZUZvbnQqfCkgcmV0dXJucyBhICdib2d1cycgdmFsdWUgKGUuZy4gQXJp
YWwpLgogLy8gVGhpcyBpcyBub3QgY29uc2lzdGVudCB3aXRoIHdoYXQgTVNETiBzYXlzICEhCi0v
LyBUaGVyZWZvcmUsIGJlZm9yZSB3ZSBjYWxsIHxDcmVhdGVGb250KnwsIHdlIGhhdmUgdG8gbWFw
IGEgUm9tYW5pemVkIG5hbWUgdG8gCi0vLyB0aGUgY29ycmVzcG9uZGluZyBuYXRpdmUgbmFtZSB1
bmRlciBhIENKSyBsb2NhbGUgYW5kIHZpY2UgdmVyc2EgCisvLyBUaGVyZWZvcmUsIGJlZm9yZSB3
ZSBjYWxsIHxDcmVhdGVGb250KnwsIHdlIGhhdmUgdG8gbWFwIGEgUm9tYW5pemVkIG5hbWUgdG8K
Ky8vIHRoZSBjb3JyZXNwb25kaW5nIG5hdGl2ZSBuYW1lIHVuZGVyIGEgQ0pLIGxvY2FsZSBhbmQg
dmljZSB2ZXJzYQogLy8gdW5kZXIgYSBub24tQ0pLIGxvY2FsZS4KLS8vIFNlZSB0aGUgY29ycmVz
cG9uZGluZyBnZWNrbyBidWdzIGF0IAorLy8gU2VlIHRoZSBjb3JyZXNwb25kaW5nIGdlY2tvIGJ1
Z3MgYXQKIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTM3
Mzk1MgogLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
NDI2CiBzdGF0aWMgYm9vbCBMb29rdXBBbHROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5n
JiBhbHROYW1lKQpAQCAtMjA2LDExICsyMDcsMTEgQEAgc3RhdGljIGJvb2wgTG9va3VwQWx0TmFt
ZShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICBmb250TmFtZU1hcC0+c2V0KFN0cmluZyhuYW1l
UGFpcnNbaV0ubmFtZSksICYobmFtZVBhaXJzW2ldLmFsdE5hbWVDb2RlcGFnZSkpOwogICAgIH0K
IAotICAgIGJvb2wgaXNBc2NpaSA9IGZhbHNlOyAKKyAgICBib29sIGlzQXNjaWkgPSBmYWxzZTsK
ICAgICBTdHJpbmcgbjsKLSAgICAvLyB1c2UgfGxvd2VyfCBvbmx5IGZvciBBU0NJSSBuYW1lcyAK
LSAgICAvLyBGb3Igbm9uLUFTQ0lJIG5hbWVzLCB3ZSBkb24ndCB3YW50IHRvIGludm9rZSBhbiBl
eHBlbnNpdmUgCi0gICAgLy8gYW5kIHVubmVjZXNzYXJ5IHxsb3dlcnwuIAorICAgIC8vIHVzZSB8
bG93ZXJ8IG9ubHkgZm9yIEFTQ0lJIG5hbWVzCisgICAgLy8gRm9yIG5vbi1BU0NJSSBuYW1lcywg
d2UgZG9uJ3Qgd2FudCB0byBpbnZva2UgYW4gZXhwZW5zaXZlCisgICAgLy8gYW5kIHVubmVjZXNz
YXJ5IHxsb3dlcnwuCiAgICAgaWYgKG5hbWUuY29udGFpbnNPbmx5QVNDSUkoKSkgewogICAgICAg
ICBpc0FzY2lpID0gdHJ1ZTsKICAgICAgICAgbiA9IG5hbWUubG93ZXIoKTsKQEAgLTI1Nyw3ICsy
NTgsNyBAQCBzdGF0aWMgSEZPTlQgY3JlYXRlRm9udEluZGlyZWN0QW5kR2V0V2luCiAvLyBUaGlz
IG1hcHMgZm9udCBmYW1pbHkgbmFtZXMgdG8gdGhlaXIgcmVwZXJ0b2lyZXMgb2Ygc3VwcG9ydGVk
IFVuaWNvZGUKIC8vIGNoYXJhY3RlcnMuIEJlY2F1c2UgaXQncyBmYW1pbHkgbmFtZXMgcmF0aGVy
IHRoYW4gZm9udCBmYWNlcyB3ZSB1c2UKIC8vIGFzIGtleXMsIHRoZXJlIG1pZ2h0IGJlIGVkZ2Ug
Y2FzZXMgd2hlcmUgb25lIGZhY2Ugb2YgYSBmb250IGZhbWlseQotLy8gaGFzIGEgZGlmZmVyZW50
IHJlcGVydG9pcmUgZnJvbSBhbm90aGVyIGZhY2Ugb2YgdGhlIHNhbWUgZmFtaWx5LiAKKy8vIGhh
cyBhIGRpZmZlcmVudCByZXBlcnRvaXJlIGZyb20gYW5vdGhlciBmYWNlIG9mIHRoZSBzYW1lIGZh
bWlseS4KIHR5cGVkZWYgSGFzaE1hcDxjb25zdCB3Y2hhcl90KiwgaWN1OjpVbmljb2RlU2V0Kj4g
Rm9udENtYXBDYWNoZTsKIAogc3RhdGljIGJvb2wgZm9udENvbnRhaW5zQ2hhcmFjdGVyKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEqIGZvbnREYXRhLApAQCAtMjc1LDEwICsyNzYsMTAgQEAgc3RhdGlj
IGJvb2wgZm9udENvbnRhaW5zQ2hhcmFjdGVyKGNvbnN0CiAgICAgICAgIGZvbnRDbWFwQ2FjaGUg
PSBuZXcgRm9udENtYXBDYWNoZTsKIAogICAgIEhhc2hNYXA8Y29uc3Qgd2NoYXJfdCosIGljdTo6
VW5pY29kZVNldCo+OjppdGVyYXRvciBpdCA9IGZvbnRDbWFwQ2FjaGUtPmZpbmQoZmFtaWx5KTsK
LSAgICBpZiAoaXQgIT0gZm9udENtYXBDYWNoZS0+ZW5kKCkpIAorICAgIGlmIChpdCAhPSBmb250
Q21hcENhY2hlLT5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQtPmNvbnRhaW5zKGNo
YXJhY3Rlcik7Ci0gICAgCi0gICAgSEZPTlQgaGZvbnQgPSBmb250RGF0YS0+aGZvbnQoKTsgCisK
KyAgICBIRk9OVCBoZm9udCA9IGZvbnREYXRhLT5oZm9udCgpOwogICAgIEhXbmREQyBoZGMoMCk7
CiAgICAgSEdESU9CSiBvbGRGb250ID0gc3RhdGljX2Nhc3Q8SEZPTlQ+KFNlbGVjdE9iamVjdCho
ZGMsIGhmb250KSk7CiAgICAgaW50IGNvdW50ID0gR2V0Rm9udFVuaWNvZGVSYW5nZXMoaGRjLCAw
KTsKQEAgLTI5NCw3ICsyOTUsNyBAQCBzdGF0aWMgYm9vbCBmb250Q29udGFpbnNDaGFyYWN0ZXIo
Y29uc3QKICAgICBnbHlwaHNldEJ1ZmZlci5yZXNpemUoR2V0Rm9udFVuaWNvZGVSYW5nZXMoaGRj
LCAwKSk7CiAgICAgR0xZUEhTRVQqIGdseXBoc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxHTFlQSFNF
VCo+KGdseXBoc2V0QnVmZmVyLmRhdGEoKSk7CiAgICAgLy8gSW4gYWRkaXRpb24sIHJlZmVyaW5n
IHRvIHRoZSBPUy8yIHRhYmxlIGFuZCBjb252ZXJ0aW5nIHRoZSBjb2RlcGFnZSBsaXN0Ci0gICAg
Ly8gdG8gdGhlIGNvdmVyYWdlIG1hcCBtaWdodCBiZSBmYXN0ZXIuIAorICAgIC8vIHRvIHRoZSBj
b3ZlcmFnZSBtYXAgbWlnaHQgYmUgZmFzdGVyLgogICAgIGNvdW50ID0gR2V0Rm9udFVuaWNvZGVS
YW5nZXMoaGRjLCBnbHlwaHNldCk7CiAgICAgQVNTRVJUKGNvdW50ID4gMCk7CiAgICAgU2VsZWN0
T2JqZWN0KGhkYywgb2xkRm9udCk7CkBAIC0zMDUsMTQgKzMwNiwxNCBAQCBzdGF0aWMgYm9vbCBm
b250Q29udGFpbnNDaGFyYWN0ZXIoY29uc3QKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBpY3U6
OlVuaWNvZGVTZXQqIGNtYXAgPSBuZXcgaWN1OjpVbmljb2RlU2V0OwogICAgIHdoaWxlIChpIDwg
Z2x5cGhzZXQtPmNSYW5nZXMpIHsKLSAgICAgICAgV0NIQVIgc3RhcnQgPSBnbHlwaHNldC0+cmFu
Z2VzW2ldLndjTG93OyAKKyAgICAgICAgV0NIQVIgc3RhcnQgPSBnbHlwaHNldC0+cmFuZ2VzW2ld
LndjTG93OwogICAgICAgICBjbWFwLT5hZGQoc3RhcnQsIHN0YXJ0ICsgZ2x5cGhzZXQtPnJhbmdl
c1tpXS5jR2x5cGhzIC0gMSk7CiAgICAgICAgIGkrKzsKICAgICB9CiAgICAgY21hcC0+ZnJlZXpl
KCk7CiAgICAgLy8gV2UgZG9uJ3QgbG93ZXJjYXNlIHxmYW1pbHl8IGJlY2F1c2UgYWxsIG9mIHRo
ZW0gYXJlIHVuZGVyIG91ciBjb250cm9sCi0gICAgLy8gYW5kIHRoZXkncmUgYWxyZWFkeSBsb3dl
cmNhc2VkLiAKLSAgICBmb250Q21hcENhY2hlLT5zZXQoZmFtaWx5LCBjbWFwKTsgCisgICAgLy8g
YW5kIHRoZXkncmUgYWxyZWFkeSBsb3dlcmNhc2VkLgorICAgIGZvbnRDbWFwQ2FjaGUtPnNldChm
YW1pbHksIGNtYXApOwogICAgIHJldHVybiBjbWFwLT5jb250YWlucyhjaGFyYWN0ZXIpOwogfQog
CkBAIC0zNTQsNyArMzU1LDcgQEAgc3RhdGljIHZvaWQgRmlsbExvZ0ZvbnQoY29uc3QgRm9udERl
c2NyaQogICAgIHdpbmZvbnQtPmxmU3RyaWtlT3V0ID0gZmFsc2U7CiAgICAgd2luZm9udC0+bGZD
aGFyU2V0ID0gREVGQVVMVF9DSEFSU0VUOwogICAgIHdpbmZvbnQtPmxmT3V0UHJlY2lzaW9uID0g
T1VUX1RUX09OTFlfUFJFQ0lTOwotICAgIHdpbmZvbnQtPmxmUXVhbGl0eSA9IFBsYXRmb3JtU3Vw
cG9ydDo6bGF5b3V0VGVzdE1vZGUoKSA/IE5PTkFOVElBTElBU0VEX1FVQUxJVFkgOiBERUZBVUxU
X1FVQUxJVFk7IC8vIEhvbm9yIHVzZXIncyBkZXNrdG9wIHNldHRpbmdzLgorICAgIHdpbmZvbnQt
PmxmUXVhbGl0eSA9IGlzUnVubmluZ0xheW91dFRlc3QoKSA/IE5PTkFOVElBTElBU0VEX1FVQUxJ
VFkgOiBERUZBVUxUX1FVQUxJVFk7IC8vIEhvbm9yIHVzZXIncyBkZXNrdG9wIHNldHRpbmdzLgog
ICAgIHdpbmZvbnQtPmxmUGl0Y2hBbmRGYW1pbHkgPSBERUZBVUxUX1BJVENIIHwgRkZfRE9OVENB
UkU7CiAgICAgd2luZm9udC0+bGZJdGFsaWMgPSBmb250RGVzY3JpcHRpb24uaXRhbGljKCk7CiAg
ICAgd2luZm9udC0+bGZXZWlnaHQgPSB0b0dESUZvbnRXZWlnaHQoZm9udERlc2NyaXB0aW9uLndl
aWdodCgpKTsKQEAgLTQzMyw3ICs0MzQsNyBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udENh
Y2hlOjpnZXRGb250CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCksICZj
LCAmc2NyaXB0KTsKICAgICBGb250UGxhdGZvcm1EYXRhKiBkYXRhID0gMDsKICAgICBpZiAoZmFt
aWx5KQotICAgICAgICBkYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnRE
ZXNjcmlwdGlvbigpLCAgQXRvbWljU3RyaW5nKGZhbWlseSwgd2NzbGVuKGZhbWlseSkpLCBmYWxz
ZSk7IAorICAgICAgICBkYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnRE
ZXNjcmlwdGlvbigpLCAgQXRvbWljU3RyaW5nKGZhbWlseSwgd2NzbGVuKGZhbWlseSkpLCBmYWxz
ZSk7CiAKICAgICAvLyBMYXN0IHJlc29ydCBmb250IGxpc3QgOiBQYW5Vbmljb2RlLiBDSksgZm9u
dHMgaGF2ZSBhIHByZXR0eQogICAgIC8vIGxhcmdlIHJlcGVydG9pcmUuIEV2ZW50dWFsbHksIHdl
IG5lZWQgdG8gc2NhbiBhbGwgdGhlIGZvbnRzCkBAIC00OTIsNyArNDkzLDcgQEAgY29uc3QgU2lt
cGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udAogICAgIC8vIHdhcnJhbnQgYW4gYWRkaXRp
b25hbCAocmVhbCBjb3ZlcmFnZSkgY2hlY2sgd2l0aCBmb250Q290YWluc0NoYXJhY3Rlci4KICAg
ICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyAoIWRhdGEgfHwgIWZvbnRDb250YWluc0NoYXJhY3Rl
cihkYXRhLCBmYW1pbHksIGMpKSAmJiBpIDwgbnVtRm9udHM7ICsraSkgewotICAgICAgICBmYW1p
bHkgPSBwYW5VbmlGb250c1tpXTsgCisgICAgICAgIGZhbWlseSA9IHBhblVuaUZvbnRzW2ldOwog
ICAgICAgICBkYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlw
dGlvbigpLCBBdG9taWNTdHJpbmcoZmFtaWx5LCB3Y3NsZW4oZmFtaWx5KSkpOwogICAgIH0KICAg
ICAvLyBXaGVuIGktdGggZm9udCAoMC1iYXNlKSBpbiB8cGFuVW5pRm9udHN8IGNvbnRhaW5zIGEg
Y2hhcmFjdGVyIGFuZApAQCAtNjAzLDggKzYwNCw4IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Y3JlYXRlRm9udFAKICAgICBMT0dGT05UIHdpbmZvbnQgPSB7MH07CiAgICAgRmlsbExv
Z0ZvbnQoZm9udERlc2NyaXB0aW9uLCAmd2luZm9udCk7CiAKLSAgICAvLyBXaW5kb3dzIHdpbGwg
YWx3YXlzIGdpdmUgdXMgYSB2YWxpZCBwb2ludGVyIGhlcmUsIGV2ZW4gaWYgdGhlIGZhY2UgbmFt
ZSAKLSAgICAvLyBpcyBub24tZXhpc3RlbnQuICBXZSBoYXZlIHRvIGRvdWJsZS1jaGVjayBhbmQg
c2VlIGlmIHRoZSBmYW1pbHkgbmFtZSB3YXMgCisgICAgLy8gV2luZG93cyB3aWxsIGFsd2F5cyBn
aXZlIHVzIGEgdmFsaWQgcG9pbnRlciBoZXJlLCBldmVuIGlmIHRoZSBmYWNlIG5hbWUKKyAgICAv
LyBpcyBub24tZXhpc3RlbnQuIFdlIGhhdmUgdG8gZG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhl
IGZhbWlseSBuYW1lIHdhcwogICAgIC8vIHJlYWxseSB1c2VkLgogICAgIFN0cmluZyB3aW5OYW1l
OwogICAgIEhGT05UIGhmb250ID0gY3JlYXRlRm9udEluZGlyZWN0QW5kR2V0V2luTmFtZShmYW1p
bHksICZ3aW5mb250LCAmd2luTmFtZSk7CkBAIC02MTQsMTUgKzYxNSwxNCBAQCBGb250UGxhdGZv
cm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQg
dG8gdXNlIHByZWRlZmluZWQgZm9udHMgImd1YXJhbnRlZWQiIHRvIGV4aXN0CiAgICAgLy8gd2hl
biB3ZSdyZSBydW5uaW5nIGluIGxheW91dC10ZXN0IG1vZGU/CiAgICAgaWYgKCFlcXVhbElnbm9y
aW5nQ2FzZShmYW1pbHksIHdpbk5hbWUpKSB7Ci0gICAgICAgIC8vIEZvciBDSksgZm9udHMgd2l0
aCBib3RoIEVuZ2xpc2ggYW5kIG5hdGl2ZSBuYW1lcywgCisgICAgICAgIC8vIEZvciBDSksgZm9u
dHMgd2l0aCBib3RoIEVuZ2xpc2ggYW5kIG5hdGl2ZSBuYW1lcywKICAgICAgICAgLy8gR2V0VGV4
dEZhY2UgcmV0dXJucyBhIG5hdGl2ZSBuYW1lIHVuZGVyIHRoZSBmb250J3MgImxvY2FsZSIKLSAg
ICAgICAgLy8gYW5kIGFuIEVuZ2xpc2ggbmFtZSB1bmRlciBvdGhlciBsb2NhbGVzIHJlZ2FyZGxl
c3Mgb2YgCisgICAgICAgIC8vIGFuZCBhbiBFbmdsaXNoIG5hbWUgdW5kZXIgb3RoZXIgbG9jYWxl
cyByZWdhcmRsZXNzIG9mCiAgICAgICAgIC8vIGxmRmFjZU5hbWUgZmllbGQgb2YgTE9HRk9OVC4g
QXMgYSByZXN1bHQsIHdlIG5lZWQgdG8gY2hlY2sKICAgICAgICAgLy8gaWYgYSBmb250IGhhcyBh
biBhbHRlcm5hdGUgbmFtZS4gSWYgdGhlcmUgaXMsIHdlIG5lZWQgdG8KICAgICAgICAgLy8gY29t
cGFyZSBpdCB3aXRoIHdoYXQncyByZXF1ZXN0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgogICAgICAg
ICBTdHJpbmcgYWx0TmFtZTsKLSAgICAgICAgaWYgKCFMb29rdXBBbHROYW1lKGZhbWlseSwgYWx0
TmFtZSkgfHwgCi0gICAgICAgICAgICAhZXF1YWxJZ25vcmluZ0Nhc2UoYWx0TmFtZSwgd2luTmFt
ZSkpIHsKKyAgICAgICAgaWYgKCFMb29rdXBBbHROYW1lKGZhbWlseSwgYWx0TmFtZSkgfHwgIWVx
dWFsSWdub3JpbmdDYXNlKGFsdE5hbWUsIHdpbk5hbWUpKSB7CiAgICAgICAgICAgICBEZWxldGVP
YmplY3QoaGZvbnQpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkocmV2aXNpb24gMTIzMzU0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMiwxMSArMiwxMSBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDgsIDIwMDks
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Q29tcGFueSAxMDAsIEluYy4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAg
LTE2LDcgKzE2LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzUsMTIgKzM1LDEyIEBA
CiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIk9wZW5UeXBlVXRpbGl0aWVzLmgiCi0jaW5j
bHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjZWxpZiBPUyhVTklYKQogI2luY2x1ZGUgIlNrU3Ry
ZWFtLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRl
ICJMYXlvdXRUZXN0TW9kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiT3BlblR5cGVTYW5pdGl6ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTgz
LDcgKzgzLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOgogICAg
ICAgICAgICBzaXplb2YobG9nRm9udC5sZkZhY2VOYW1lWzBdKSAqICgxICsgbV9uYW1lLmxlbmd0
aCgpKSk7CiAKICAgICAvLyBGSVhNRTogYWxtb3N0IGlkZW50aWNhbCB0byBGaWxsTG9nRm9udCBp
biBGb250Q2FjaGVXaW4uY3BwLgotICAgIC8vIE5lZWQgdG8gcmVmYWN0b3IuIAorICAgIC8vIE5l
ZWQgdG8gcmVmYWN0b3IuCiAgICAgbG9nRm9udC5sZkhlaWdodCA9IC1zaXplOwogICAgIGxvZ0Zv
bnQubGZXaWR0aCA9IDA7CiAgICAgbG9nRm9udC5sZkVzY2FwZW1lbnQgPSAwOwpAQCAtOTIsNyAr
OTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6CiAgICAgbG9n
Rm9udC5sZlN0cmlrZU91dCA9IGZhbHNlOwogICAgIGxvZ0ZvbnQubGZDaGFyU2V0ID0gREVGQVVM
VF9DSEFSU0VUOwogICAgIGxvZ0ZvbnQubGZPdXRQcmVjaXNpb24gPSBPVVRfVFRfT05MWV9QUkVD
SVM7Ci0gICAgbG9nRm9udC5sZlF1YWxpdHkgPSBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RN
b2RlKCkgPworICAgIGxvZ0ZvbnQubGZRdWFsaXR5ID0gaXNSdW5uaW5nTGF5b3V0VGVzdCgpID8K
ICAgICAgICAgICAgICAgICAgICAgICAgIE5PTkFOVElBTElBU0VEX1FVQUxJVFkgOgogICAgICAg
ICAgICAgICAgICAgICAgICAgREVGQVVMVF9RVUFMSVRZOyAvLyBIb25vciB1c2VyJ3MgZGVza3Rv
cCBzZXR0aW5ncy4KICAgICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkgPSBERUZBVUxUX1BJVENI
IHwgRkZfRE9OVENBUkU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ZvbnRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ZvbnRTa2lhLmNwcAkocmV2aXNpb24gMTIzMzU0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAgKzEsMTAgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQogICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
QEAgLTE0LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzMsOCArMzMsOCBA
QAogCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0TW9kZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dFNraWEuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJTaW1wbGVG
b250RGF0YS5oIgogCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKQEAgLTgzLDcgKzgzLDcgQEAgdm9p
ZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogCiAgICAgYm9vbCBzaG91bGRT
bW9vdGhGb250cyA9IHRydWU7CiAgICAgYm9vbCBzaG91bGRBbnRpYWxpYXMgPSB0cnVlOwotICAg
IAorCiAgICAgc3dpdGNoIChmb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAg
ICBjYXNlIEFudGlhbGlhc2VkOgogICAgICAgICBzaG91bGRTbW9vdGhGb250cyA9IGZhbHNlOwpA
QCAtOTYsMTAgKzk2LDEwIEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGcKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdXRvU21vb3RoaW5nOgogICAgICAgICAvLyBG
b3IgdGhlIEF1dG9TbW9vdGggY2FzZSwgZG9uJ3QgZG8gYW55dGhpbmchIEtlZXAgdGhlIGRlZmF1
bHQgc2V0dGluZ3MuCi0gICAgICAgIGJyZWFrOyAKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IAotICAgIGlmICghc2hvdWxkVXNlU21vb3RoaW5nKCkgfHwgUGxhdGZvcm1TdXBwb3J0OjpsYXlv
dXRUZXN0TW9kZSgpKQorCisgICAgaWYgKCFzaG91bGRVc2VTbW9vdGhpbmcoKSB8fCBpc1J1bm5p
bmdMYXlvdXRUZXN0KCkpCiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFsc2U7CiAKICAg
ICBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMgPSBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJv
bSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtQW5kcm9pZC5jcHAJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RNb2RlLmgiCiAjaW5jbHVkZSAi
UGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTWVkaWFDb250cm9sc0Nocm9taXVtLmgiCkBAIC01Niw3ICs1Nyw3IEBAIFJlbmRlclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjp+UmVuZGVyVGhlbWUKIAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6OnN5c3RlbUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdAogewotICAgIGlmIChQ
bGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkgJiYgY3NzVmFsdWVJZCA9PSBDU1NWYWx1
ZUJ1dHRvbmZhY2UpIHsKKyAgICBpZiAoaXNSdW5uaW5nTGF5b3V0VGVzdCgpICYmIGNzc1ZhbHVl
SWQgPT0gQ1NTVmFsdWVCdXR0b25mYWNlKSB7CiAgICAgICAgIC8vIE1hdGNoIENocm9taXVtIExp
bnV4JyBidXR0b24gY29sb3IgaW4gbGF5b3V0IHRlc3RzLgogICAgICAgICBzdGF0aWMgY29uc3Qg
Q29sb3IgbGludXhCdXR0b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7CiAgICAgICAgIHJldHVybiBs
aW51eEJ1dHRvbkdyYXlDb2xvcjsKQEAgLTc3LDcgKzc4LDcgQEAgU3RyaW5nIFJlbmRlclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjpleHRyYQogCiB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lk
OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3QKIHsKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlv
dXRUZXN0TW9kZSgpKSB7CisgICAgaWYgKGlzUnVubmluZ0xheW91dFRlc3QoKSkgewogICAgICAg
ICAvLyBNYXRjaCBDaHJvbWl1bSBMaW51eCBzcGluIGJ1dHRvbiBzdHlsZSBpbiBsYXlvdXQgdGVz
dHMuCiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciByZW1vdmluZyB0aGUgY29uZGl0aW9uYWwg
aWYgYSBmdXR1cmUgQW5kcm9pZCB0aGVtZSBtYXRjaGVzIHRoaXMuCiAgICAgICAgIEludFNpemUg
c2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6
OlBhcnRJbm5lclNwaW5CdXR0b24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0JKHJldmlzaW9uIDEyMzM1NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSwxMCArMjEsMTAgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0
ICJDYWxlbmRhclBpY2tlck1hYy5oIgorI2ltcG9ydCAiTGF5b3V0VGVzdE1vZGUuaCIKICNpbXBv
cnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYy5oIgogI2ltcG9ydCAiUGFpbnRJbmZvLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVN1
cHBvcnQuaCIKICNpbXBvcnQgIlJlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5oIgogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiVXNlckFnZW50U3R5bGVTaGVl
dHMuaCIKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpzdXBw
b3J0c0RhdAogCiBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNUZXN0TW9kZUZvY3Vz
UmluZ0NvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRU
ZXN0TW9kZSgpOworICAgIHJldHVybiBpc1J1bm5pbmdMYXlvdXRUZXN0KCk7CiB9CiAKIE5TVmll
dyogUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6ZG9jdW1lbnRWaWV3Rm9yKFJlbmRlck9iamVjdCop
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bVNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtU2tpYS5jcHAJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0TW9k
ZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiUGFpbnRJ
bmZvLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlck1l
ZGlhQ29udHJvbHNDaHJvbWl1bS5oIgpAQCAtMTYwLDcgKzE2MCw3IEBAIGRvdWJsZSBSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6Y2FyZXRCbGkKIHsKICAgICAvLyBEaXNhYmxlIHRoZSBibGlua2lu
ZyBjYXJldCBpbiBsYXlvdXQgdGVzdCBtb2RlLCBhcyBpdCBpbnRyb2R1Y2VzCiAgICAgLy8gYSBy
YWNlIGNvbmRpdGlvbiBmb3IgdGhlIHBpeGVsIHRlc3RzLiBodHRwOi8vYi8xMTk4NDQwCi0gICAg
aWYgKFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSkKKyAgICBpZiAoaXNSdW5uaW5n
TGF5b3V0VGVzdCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBjYXJldEJsaW5r
SW50ZXJ2YWxJbnRlcm5hbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gMTIzMzU0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgorI2luY2x1ZGUgIkxh
eW91dFRlc3RNb2RlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNs
dWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTI0Nyw3
ICsyNDgsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnN1cHBvcnRzRm9jCiAKIENv
bG9yIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0
TW9kZSgpKQorICAgIGlmIChpc1J1bm5pbmdMYXlvdXRUZXN0KCkpCiAgICAgICAgIHJldHVybiBD
b2xvcigweDAwLCAweDAwLCAweGZmKTsgLy8gUm95YWwgYmx1ZS4KICAgICBDT0xPUlJFRiBjb2xv
ciA9IEdldFN5c0NvbG9yKENPTE9SX0hJR0hMSUdIVCk7CiAgICAgcmV0dXJuIENvbG9yKEdldFJW
YWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvciksIDB4ZmYpOwpA
QCAtMjU1LDcgKzI1Niw3IEBAIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3Jt
QWMKIAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6
bGF5b3V0VGVzdE1vZGUoKSkKKyAgICBpZiAoaXNSdW5uaW5nTGF5b3V0VGVzdCgpKQogICAgICAg
ICByZXR1cm4gQ29sb3IoMHg5OSwgMHg5OSwgMHg5OSk7IC8vIE1lZGl1bSBncmF5LgogICAgIENP
TE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3IoQ09MT1JfR1JBWVRFWFQpOwogICAgIHJldHVybiBD
b2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3Ip
LCAweGZmKTsKQEAgLTI2Myw3ICsyNjQsNyBAQCBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtV2lu
OjpwbGF0Zm9ybUluCiAKIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoUGxhdGZvcm1T
dXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgIGlmIChpc1J1bm5pbmdMYXlvdXRUZXN0KCkp
CiAgICAgICAgIHJldHVybiBDb2xvcigweGZmLCAweGZmLCAweGNjKTsgLy8gUGFsZSB5ZWxsb3cu
CiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9ISUdITElHSFRURVhUKTsK
ICAgICByZXR1cm4gQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0
QlZhbHVlKGNvbG9yKSwgMHhmZik7CkBAIC0zODQsNyArMzg1LDcgQEAgc3RhdGljIGludCBjc3NW
YWx1ZUlkVG9TeXNDb2xvckluZGV4KGludAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6
c3lzdGVtQ29sb3IoaW50IGNzc1ZhbHVlSWQpIGNvbnN0CiB7CiAgICAgaW50IHN5c0NvbG9ySW5k
ZXggPSBjc3NWYWx1ZUlkVG9TeXNDb2xvckluZGV4KGNzc1ZhbHVlSWQpOwotICAgIGlmIChQbGF0
Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkgfHwgKHN5c0NvbG9ySW5kZXggPT0gLTEpKQor
ICAgIGlmIChpc1J1bm5pbmdMYXlvdXRUZXN0KCkgfHwgKHN5c0NvbG9ySW5kZXggPT0gLTEpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwogCiAg
ICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihzeXNDb2xvckluZGV4KTsKQEAgLTQ3OSw3
ICs0ODAsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50U2xpZGVyCiAKIHN0
YXRpYyBpbnQgbWVudUxpc3RCdXR0b25XaWR0aCgpCiB7Ci0gICAgc3RhdGljIGludCB3aWR0aCA9
IFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSA/IGtTdGFuZGFyZE1lbnVMaXN0QnV0
dG9uV2lkdGggOiBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYVlNDUk9MTCk7CisgICAgc3RhdGljIGlu
dCB3aWR0aCA9IGlzUnVubmluZ0xheW91dFRlc3QoKSA/IGtTdGFuZGFyZE1lbnVMaXN0QnV0dG9u
V2lkdGggOiBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYVlNDUk9MTCk7CiAgICAgcmV0dXJuIHdpZHRo
OwogfQogCkBAIC02MDMsNyArNjA0LDcgQEAgdW5zaWduZWQgUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bjo6ZGV0ZXJtaQogCiAgICAgLy8gU28gYXJlIHJlYWRvbmx5IHRleHQgZmllbGRzLgogICAgIGlm
IChpc1JlYWRPbmx5Q29udHJvbChvKSAmJiAocGFydCA9PSBUZXh0RmllbGRQYXJ0IHx8IHBhcnQg
PT0gVGV4dEFyZWFQYXJ0IHx8IHBhcnQgPT0gU2VhcmNoRmllbGRQYXJ0KSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIGlmIChwYXJ0ID09
IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2Fs
UGFydCkgewogICAgICAgICBpZiAoIWlzRW5hYmxlZChvKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMjMzNTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTIzICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgbGF5b3V0VGVzdE1vZGUgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJh
Y2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6c2V0TGF5b3V0VGVzdE1vZGUpOgorICAgICAgICAoV2ViS2l0OjpsYXlvdXRUZXN0TW9k
ZSk6CisKIDIwMTItMDctMjMgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5pZnkgbnVtVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdlZCBhbmQgbmVlZFRv
dWNoRXZlbnRzIGluIHRoZSBjaHJvbWUgY2xpZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMiwxMyArMzAyLDYgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFBsYXRmbwogICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+aW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKIH0KIAotLy8gTGF5b3V0
VGVzdE1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKQot
ewotICAgIHJldHVybiBXZWJLaXQ6OmxheW91dFRlc3RNb2RlKCk7Ci19Ci0KIC8vIFBsdWdpbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBsdWdpbnMoYm9vbCByZWZyZXNo
LCBWZWN0b3I8UGx1Z2luSW5mbz4qIHJlc3VsdHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJLaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYktpdC5jcHAJKHJldmlzaW9uIDEyMzM1NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYktpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2luY2x1ZGUgIkxheW91dFRl
c3RNb2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC04MSw3ICs4Miw2IEBAIHN0YXRpYyBXZWJUaHJl
YWQ6OlRhc2tPYnNlcnZlciogc19lbmRPZlQKIHN0YXRpYyBib29sIHNfd2ViS2l0SW5pdGlhbGl6
ZWQgPSBmYWxzZTsKIAogc3RhdGljIFdlYktpdFBsYXRmb3JtU3VwcG9ydCogc193ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQgPSAwOwotc3RhdGljIGJvb2wgc19sYXlvdXRUZXN0TW9kZSA9IGZhbHNlOwog
CiBzdGF0aWMgYm9vbCBnZW5lcmF0ZUVudHJvcHkodW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXpl
X3QgbGVuZ3RoKQogewpAQCAtMTc2LDEyICsxNzYsMTIgQEAgV2ViS2l0UGxhdGZvcm1TdXBwb3J0
KiB3ZWJLaXRQbGF0Zm9ybVN1cAogCiB2b2lkIHNldExheW91dFRlc3RNb2RlKGJvb2wgdmFsdWUp
CiB7Ci0gICAgc19sYXlvdXRUZXN0TW9kZSA9IHZhbHVlOworICAgIFdlYkNvcmU6OnNldElzUnVu
bmluZ0xheW91dFRlc3QodmFsdWUpOwogfQogCiBib29sIGxheW91dFRlc3RNb2RlKCkKIHsKLSAg
ICByZXR1cm4gc19sYXlvdXRUZXN0TW9kZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aXNSdW5uaW5n
TGF5b3V0VGVzdCgpOwogfQogCiB2b2lkIGVuYWJsZUxvZ0NoYW5uZWwoY29uc3QgY2hhciogbmFt
ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153939</attachid>
            <date>2012-07-23 19:34:06 -0700</date>
            <delta_ts>2012-07-23 22:05:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92010-20120723223329.patch</filename>
            <type>text/plain</type>
            <size>42736</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA3LTIzICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
bGF5b3V0VGVzdE1vZGUgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTIwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tp
bmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MYXlvdXRUZXN0U3VwcG9ydC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc1J1bm5pbmdM
YXlvdXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldElzUnVubmluZ0xheW91dFRlc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xheW91dFRlc3RTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6
CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFy
QmFja2dyb3VuZCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpzY3JvbGxiYXJUaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6YnV0dG9uU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb29rdXBBbHROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRD
b250YWluc0NoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTG9nRm9udCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6c3lzdGVtQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmNhcmV0QmxpbmtJbnRlcnZhbCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpw
bGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBs
YXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnN5c3RlbUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Om1lbnVMaXN0QnV0dG9uV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJv
bWl1bVdpbjo6ZGV0ZXJtaW5lQ2xhc3NpY1N0YXRlKToKKwogMjAxMi0wNy0yMyAgTmljbyBXZWJl
ciAgPHRoYWtpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTaG93IHNlYXJj
aCB0aWNrbWFya3Mgb24gY3NzLXN0eWxlZCBzY3JvbGxiYXJzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTIzNDE3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MDAsNiArMTcwMCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9LVVJMLmNwcAogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAKICAg
ICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAKKyAgICBwbGF0Zm9ybS9MYXlvdXRUZXN0U3VwcG9ydC5j
cHAKICAgICBwbGF0Zm9ybS9MZW5ndGguY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAog
ICAgIHBsYXRmb3JtL0xpbmtIYXNoLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiAxMjM0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTA4LDYgKzM1MDgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYXlvdXRUZXN0U3VwcG9ydC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91
dFRlc3RTdXBwb3J0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWRE
ZXZpY2VMaW51eC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWRE
ZXZpY2VMaW51eC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggXApAQCAtNjI2OCw0ICs2MjcwLDMgQEAgZG9t
X2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZv
VXNhZ2VDYWxsYmFjay5pZGwKIAogZW5kaWYgICMgRU5EIEVOQUJMRV9RVU9UQQotCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDEyMzQxNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHdvcmtpbmcgY29weSkKQEAgLTk5Nyw2ICs5OTcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwIFwKKyAgICBwbGF0Zm9ybS9MYXlvdXRUZXN0U3VwcG9ydC5jcHAg
XAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAgXAogICAgIHBsYXRmb3JtL0xlbmd0aEJveC5jcHAg
XAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gMTIzNDE3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODcsNiArMjg3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9LVVJM
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0tVUkxIYXNoLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL0xhbmd1YWdlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL0xheW91dFRlc3RTdXBw
b3J0LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vTGF5b3V0VGVzdFN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vTGVuZ3RoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xl
bmd0aEJveC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9MZW5ndGhTaXplLmgnLApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDEyMzQxNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yODE2Myw2ICsyODE2MywxNCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxMYXlvdXRUZXN0U3Vw
cG9ydC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXExheW91dFRlc3RTdXBwb3J0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExlbmd0aC5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIzNDE3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01ODk1LDYg
KzU4OTUsNyBAQAogCQlENjMwRTJBQzE0OUJGMzQ0MDA1QjJGOTQgLyogU3RhdHNDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENjMwRTJBQjE0
OUJGMzQ0MDA1QjJGOTQgLyogU3RhdHNDb3VudGVyLmggKi87IH07CiAJCUQ2MzBFMkFDMTQ5QkYz
NDQwMDVCMkY5NSAvKiBNZW1vcnlVc2FnZVN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5NSAvKiBNZW1v
cnlVc2FnZVN1cHBvcnQuaCAqLzsgfTsKIAkJRDYzMEUyQUMxNDlCRjM0NDAwNUIyRjk2IC8qIEV2
ZW50VHJhY2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBENjMwRTJBQjE0OUJGMzQ0MDA1QjJGOTYgLyogRXZlbnRUcmFjZXIuaCAqLzsgfTsKKwkJRDYz
MEUyQUMxNDlCRjM0NDAwNUIyRjkzIC8qIExheW91dFRlc3RTdXBwb3J0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBENjMwRTJBQjE0OUJGMzQ0MDA1QjJG
OTcgLyogTGF5b3V0VGVzdFN1cHBvcnQuaCAqLzsgfTsKIAkJRDZFMjc2QUYxNDYzNzQ1NTAwMUQy
ODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDZFMjc2QUQxNDYzNzQ1NTAwMUQyODBBIC8q
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovOyB9OwogCQlENkUyNzZCMDE0NjM3
NDU1MDAxRDI4MEEgLyogTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDZFMjc2QUUxNDYzNzQ1NTAwMUQy
ODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLzsgfTsKIAkJRDZFNTI4QTMx
NDlBOTI2RDAwRUZFMUYzIC8qIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ2RTUyOEExMTQ5QTky
NkQwMEVGRTFGMyAvKiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAgKi87IH07CkBA
IC01OTAzLDYgKzU5MDQsNyBAQAogCQlENkZEQUVGMzE0OUMwNjE5MDAzN0IxRTIgLyogU3RhdHND
b3VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFFMiAvKiBTdGF0c0NvdW50ZXIuY3BwICovOyB9OwogCQlE
NkZEQUVGMzE0OUMwNjE5MDAzN0IxRTMgLyogTWVtb3J5VXNhZ2VTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ2RkRBRUYyMTQ5QzA2MTkw
MDM3QjFFMyAvKiBNZW1vcnlVc2FnZVN1cHBvcnQuY3BwICovOyB9OwogCQlENkZEQUVGMzE0OUMw
NjE5MDAzN0IxRTQgLyogRXZlbnRUcmFjZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDZGREFFRjIxNDlDMDYxOTAwMzdCMUU0IC8qIEV2ZW50VHJh
Y2VyLmNwcCAqLzsgfTsKKwkJRDZGREFFRjMxNDlDMDYxOTAwMzdCMUU1IC8qIExheW91dFRlc3RT
dXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFFNSAvKiBMYXlvdXRUZXN0U3VwcG9ydC5jcHAgKi87IH07
CiAJCUQ3MEFENjU3MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDcwQUQ2NTUxM0UxMzQyQjAw
NUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAgKi87IH07CiAJCUQ3MEFENjU4MTNFMTM0MkIwMDVC
NTBCNCAvKiBSZW5kZXJSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQ3MEFENjU2MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uaCAq
LzsgfTsKIAkJRDcyRjZENzkxNTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQ3MkY2
RDc3MTUzMTU5QTMwMDFFRTQ0RSAvKiBGbG93VGhyZWFkQ29udHJvbGxlci5jcHAgKi87IH07CkBA
IC0xMzE0Niw2ICsxMzE0OCw3IEBACiAJCUQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5NCAvKiBTdGF0
c0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdHNDb3VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5
NSAvKiBNZW1vcnlVc2FnZVN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVtb3J5VXNhZ2VTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ2
MzBFMkFCMTQ5QkYzNDQwMDVCMkY5NiAvKiBFdmVudFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFdmVudFRyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlENjMwRTJBQjE0OUJGMzQ0MDA1QjJGOTcgLyogSGlzdG9ncmFtU3VwcG9ydC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRUZXN0U3VwcG9ydC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlENkUyNzZBRDE0NjM3NDU1MDAxRDI4MEEgLyogTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDZFMjc2QUUxNDYzNzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
NkU1MjhBMTE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMxNTQs
NiArMTMxNTcsNyBAQAogCQlENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTIgLyogU3RhdHNDb3VudGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRzQ291bnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQ2RkRBRUYyMTQ5QzA2MTkwMDM3QjFF
MyAvKiBNZW1vcnlVc2FnZVN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVtb3J5VXNhZ2VTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDZGREFFRjIxNDlDMDYxOTAwMzdCMUU0IC8qIEV2ZW50VHJhY2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50VHJhY2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDZGREFFRjIxNDlDMDYxOTAwMzdCMUU1IC8qIExheW91dFRl
c3RTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91
dFRlc3RTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDcwQUQ2NTUx
M0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJSZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlENzBBRDY1NjEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclJlZ2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlENzJGNkQ3NzE1MzE1OUEzMDAxRUU0NEUgLyogRmxvd1RocmVhZENv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvd1Ro
cmVhZENvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NzEs
NiArMjA1NzUsOCBAQAogCQkJCTI2QTUwMzREMTRGMDk4MzYwMEFBNzMwRCAvKiBLVVJMV1RGVVJM
SW1wbC5oICovLAogCQkJCUUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAg
Ki8sCiAJCQkJODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdlLmggKi8sCisJCQkJ
RDZGREFFRjIxNDlDMDYxOTAwMzdCMUU1IC8qIExheW91dFRlc3RTdXBwb3J0LmNwcCAqLywKKwkJ
CQlENjMwRTJBQjE0OUJGMzQ0MDA1QjJGOTcgLyogTGF5b3V0VGVzdFN1cHBvcnQuaCAqLywKIAkJ
CQlCQ0U2NUJFODBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCAqLywKIAkJCQlCQ0U2NUJF
OTBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmggKi8sCiAJCQkJMTQ2Q0MxMTMxNTY5ODhCRDAw
MTA5RTM3IC8qIExlbmd0aEJveC5jcHAgKi8sCkBAIC0yNDA3MCw2ICsyNDA3Niw3IEBACiAJCQkJ
MjkxN0I1NjMxNDczNDk2QzAwNTJDOUQwIC8qIExheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExMjUzOEQ0MTNGOUI2MEEwMDAyNDc1NCAvKiBMYXlvdXRSZXBh
aW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBM
YXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRDYzMEUyQUMxNDlCRjM0NDAwNUIyRjk3
IC8qIExheW91dFRlc3RTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQUNGMjkwMTEzQjJB
MEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY1
MEQ5MUU2QUYwMDBGODlFRSAvKiBMZWdhY3lXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0U2NUJFQjBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKQEAg
LTI3MzUyLDYgKzI3MzU5LDcgQEAKIAkJCQkyOTE3QjU2NjE0NzM0OTk1MDA1MkM5RDAgLyogTGF5
ZXJGbHVzaFNjaGVkdWxlck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTIwQUNBNDEzRjk5
OENBMDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
OTA2NjA2MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlENkZEQUVGMzE0OUMwNjE5MDAzN0IxRTUgLyogTGF5b3V0VGVzdFN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTEyREQ4RjQwRDkxRTZBRjAwMEY4OUVFIC8qIExlZ2FjeVdlYkFy
Y2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8q
IExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNE
RjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgJKHJldmlzaW9uIDEyMzQxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGRldmljZU1vdGlvbkVuYWJsZWQoKSB7IHJl
dHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCBkZXZpY2VNb3Rp
b25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KICAgICBz
dGF0aWMgYm9vbCBvbmRldmljZW1vdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlv
bkVuYWJsZWQ7IH0KLSAgICAKKwogICAgIHN0YXRpYyB2b2lkIHNldERldmljZU9yaWVudGF0aW9u
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIHsg
cmV0dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgZGV2
aWNlT3JpZW50YXRpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9u
RW5hYmxlZDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VGVzdFN1cHBv
cnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFRlc3RT
dXBwb3J0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91
dFRlc3RTdXBwb3J0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRUZXN0U3VwcG9ydC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBib29sIHNfaXNSdW5uaW5nTGF5b3V0VGVzdCA9IGZhbHNlOworCiti
b29sIGlzUnVubmluZ0xheW91dFRlc3QoKQoreworICAgIHJldHVybiBzX2lzUnVubmluZ0xheW91
dFRlc3Q7Cit9CisKK3ZvaWQgc2V0SXNSdW5uaW5nTGF5b3V0VGVzdChib29sIHZhbHVlKQorewor
ICAgIHNfaXNSdW5uaW5nTGF5b3V0VGVzdCA9IHZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0U3VwcG9ydC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFRlc3RTdXBwb3J0
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRUZXN0U3Vw
cG9ydC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMYXlvdXRUZXN0U3Vw
cG9ydF9oCisjZGVmaW5lIExheW91dFRlc3RTdXBwb3J0X2gKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitib29sIGlzUnVubmluZ0xheW91dFRlc3QoKTsKK3ZvaWQgc2V0SXNSdW5uaW5nTGF5b3V0
VGVzdChib29sKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGF5b3V0
VGVzdFN1cHBvcnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEyMzQxNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgsOSArMTI4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG5vdGlmeUpTT3V0T2ZN
ZW1vcnkoRnJhbWUqKTsKICAgICBzdGF0aWMgYm9vbCBhbGxvd1NjcmlwdERlc3BpdGVTZXR0aW5n
cyhjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CiAKLSAgICAvLyBMYXlvdXRUZXN0TW9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0
YXRpYyBib29sIGxheW91dFRlc3RNb2RlKCk7Ci0KICAgICAvLyBQbHVnaW4gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0
YXRpYyBib29sIHBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAg
ICBzdGF0aWMgTlBPYmplY3QqIHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCShyZXZpc2lvbiAxMjM0MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oIgogCisj
aW5jbHVkZSAiTGF5b3V0VGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRT
a2lhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZv
cm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCIKIApAQCAtNDksNyArNDksNyBAQCBTY3JvbGxiYXJUaGVtZSogU2Nyb2xs
YmFyVGhlbWU6Om5hdGl2ZVRoCiAKIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6
c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogewot
ICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkpIHsKKyAgICBpZiAoaXNS
dW5uaW5nTGF5b3V0VGVzdCgpKSB7CiAgICAgICAgIC8vIE1hdGNoIENocm9taXVtLUxpbnV4IGZv
ciBEdW1wUmVuZGVyVHJlZSwgc28gdGhlIGxheW91dCB0ZXN0IHJlc3VsdHMKICAgICAgICAgLy8g
Y2FuIGJlIHNoYXJlZC4gVGhlIHdpZHRoIG9mIHNjcm9sbGJhciBkb3duIGFycm93IHNob3VsZCBl
cXVhbCB0aGUKICAgICAgICAgLy8gd2lkdGggb2YgdGhlIHZlcnRpY2FsIHNjcm9sbGJhci4KQEAg
LTE0OCw3ICsxNDgsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWlu
CiB7CiAgICAgLy8gUGFpbnQgYmxhY2sgYmFja2dyb3VuZCBpbiBEdW1wUmVuZGVyVHJlZSwgb3Ro
ZXJ3aXNlIHRoZSBwaXhlbHMgaW4gdGhlIHNjcm9sbGJhciBhcmVhIGRlcGVuZAogICAgIC8vIG9u
IHRoZWlyIHByZXZpb3VzIHN0YXRlLCB3aGljaCBtYWtlcyB0aGUgZHVtcGVkIHJlc3VsdCB1bmRl
dGVybWluZWQuCi0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSkKKyAg
ICBpZiAoaXNSdW5uaW5nTGF5b3V0VGVzdCgpKQogICAgICAgICBjb250ZXh0LT5maWxsUmVjdChz
Y3JvbGxiYXItPmZyYW1lUmVjdCgpLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAkocmV2aXNpb24gMTIzNDE3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx2
c3N0eWxlLmg+CiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlv
dXRUZXN0U3VwcG9ydC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIK
QEAgLTYxLDcgKzYyLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNjcm9sbGJh
cgogewogICAgIHN0YXRpYyBpbnQgdGhpY2tuZXNzOwogICAgIGlmICghdGhpY2tuZXNzKSB7Ci0g
ICAgICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkpCisgICAgICAgIGlm
IChpc1J1bm5pbmdMYXlvdXRUZXN0KCkpCiAgICAgICAgICAgICByZXR1cm4ga01hY1Njcm9sbGJh
clNpemVbY29udHJvbFNpemVdOwogICAgICAgICB0aGlja25lc3MgPSBHZXRTeXN0ZW1NZXRyaWNz
KFNNX0NYVlNDUk9MTCk7CiAgICAgfQpAQCAtMjU2LDcgKzI1Nyw3IEBAIEludFNpemUgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6YnV0dG8KICAgICAvLyB0ZXN0IG1vZGUgc28gdGhhdCBzaG91
bGQgYmUgZW5vdWdoIHRvIHJlc3VsdCBpbiByZXBlYXRhYmxlIHJlc3VsdHMsIGJ1dAogICAgIC8v
IHByZXNlcnZpbmcgdGhpcyBoYWNrIGF2b2lkcyBoYXZpbmcgdG8gcmViYXNlbGluZSBwaXhlbCB0
ZXN0cy4KICAgICBjb25zdCBpbnQga0xheW91dFRlc3RNb2RlR2lydGggPSAxNzsKLSAgICBpbnQg
Z2lydGggPSBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkgPyBrTGF5b3V0VGVzdE1v
ZGVHaXJ0aCA6IHRoaWNrbmVzczsKKyAgICBpbnQgZ2lydGggPSBpc1J1bm5pbmdMYXlvdXRUZXN0
KCkgPyBrTGF5b3V0VGVzdE1vZGVHaXJ0aCA6IHRoaWNrbmVzczsKIAogICAgIGlmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQg
d2lkdGggPSBzY3JvbGxiYXItPndpZHRoKCkgPCAyICogZ2lydGggPyBzY3JvbGxiYXItPndpZHRo
KCkgLyAyIDogZ2lydGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3Bw
CShyZXZpc2lvbiAxMjM0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEg
KzEsMTEgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KICAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgog
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQpAQCAtMTUsNyArMTUsNyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAK
KyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRVdGlsc0Nocm9taXVt
V2luLmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdFN1cHBvcnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0
YS5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdW5pc2V0Lmg+CkBAIC01NSwxMCArNTYsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKIC8vIGFza2VkIGZvciBhIENKSyBmb250IHdpdGggYSBSb21hbml6ZWQg
bmFtZSB1bmRlciBhIENKSyBsb2NhbGUsCiAvLyB8R2V0VGV4dEZhY2V8IChhZnRlciB8Q3JlYXRl
Rm9udCp8KSByZXR1cm5zIGEgJ2JvZ3VzJyB2YWx1ZSAoZS5nLiBBcmlhbCkuCiAvLyBUaGlzIGlz
IG5vdCBjb25zaXN0ZW50IHdpdGggd2hhdCBNU0ROIHNheXMgISEKLS8vIFRoZXJlZm9yZSwgYmVm
b3JlIHdlIGNhbGwgfENyZWF0ZUZvbnQqfCwgd2UgaGF2ZSB0byBtYXAgYSBSb21hbml6ZWQgbmFt
ZSB0byAKLS8vIHRoZSBjb3JyZXNwb25kaW5nIG5hdGl2ZSBuYW1lIHVuZGVyIGEgQ0pLIGxvY2Fs
ZSBhbmQgdmljZSB2ZXJzYSAKKy8vIFRoZXJlZm9yZSwgYmVmb3JlIHdlIGNhbGwgfENyZWF0ZUZv
bnQqfCwgd2UgaGF2ZSB0byBtYXAgYSBSb21hbml6ZWQgbmFtZSB0bworLy8gdGhlIGNvcnJlc3Bv
bmRpbmcgbmF0aXZlIG5hbWUgdW5kZXIgYSBDSksgbG9jYWxlIGFuZCB2aWNlIHZlcnNhCiAvLyB1
bmRlciBhIG5vbi1DSksgbG9jYWxlLgotLy8gU2VlIHRoZSBjb3JyZXNwb25kaW5nIGdlY2tvIGJ1
Z3MgYXQgCisvLyBTZWUgdGhlIGNvcnJlc3BvbmRpbmcgZ2Vja28gYnVncyBhdAogLy8gaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczOTUyCiAvLyBodHRwczov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE0MjYKIHN0YXRpYyBib29s
IExvb2t1cEFsdE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGFsdE5hbWUpCkBAIC0y
MDYsMTEgKzIwNywxMSBAQCBzdGF0aWMgYm9vbCBMb29rdXBBbHROYW1lKGNvbnN0IFN0cmluZyYK
ICAgICAgICAgICAgIGZvbnROYW1lTWFwLT5zZXQoU3RyaW5nKG5hbWVQYWlyc1tpXS5uYW1lKSwg
JihuYW1lUGFpcnNbaV0uYWx0TmFtZUNvZGVwYWdlKSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0Fz
Y2lpID0gZmFsc2U7IAorICAgIGJvb2wgaXNBc2NpaSA9IGZhbHNlOwogICAgIFN0cmluZyBuOwot
ICAgIC8vIHVzZSB8bG93ZXJ8IG9ubHkgZm9yIEFTQ0lJIG5hbWVzIAotICAgIC8vIEZvciBub24t
QVNDSUkgbmFtZXMsIHdlIGRvbid0IHdhbnQgdG8gaW52b2tlIGFuIGV4cGVuc2l2ZSAKLSAgICAv
LyBhbmQgdW5uZWNlc3NhcnkgfGxvd2VyfC4gCisgICAgLy8gdXNlIHxsb3dlcnwgb25seSBmb3Ig
QVNDSUkgbmFtZXMKKyAgICAvLyBGb3Igbm9uLUFTQ0lJIG5hbWVzLCB3ZSBkb24ndCB3YW50IHRv
IGludm9rZSBhbiBleHBlbnNpdmUKKyAgICAvLyBhbmQgdW5uZWNlc3NhcnkgfGxvd2VyfC4KICAg
ICBpZiAobmFtZS5jb250YWluc09ubHlBU0NJSSgpKSB7CiAgICAgICAgIGlzQXNjaWkgPSB0cnVl
OwogICAgICAgICBuID0gbmFtZS5sb3dlcigpOwpAQCAtMjU3LDcgKzI1OCw3IEBAIHN0YXRpYyBI
Rk9OVCBjcmVhdGVGb250SW5kaXJlY3RBbmRHZXRXaW4KIC8vIFRoaXMgbWFwcyBmb250IGZhbWls
eSBuYW1lcyB0byB0aGVpciByZXBlcnRvaXJlcyBvZiBzdXBwb3J0ZWQgVW5pY29kZQogLy8gY2hh
cmFjdGVycy4gQmVjYXVzZSBpdCdzIGZhbWlseSBuYW1lcyByYXRoZXIgdGhhbiBmb250IGZhY2Vz
IHdlIHVzZQogLy8gYXMga2V5cywgdGhlcmUgbWlnaHQgYmUgZWRnZSBjYXNlcyB3aGVyZSBvbmUg
ZmFjZSBvZiBhIGZvbnQgZmFtaWx5Ci0vLyBoYXMgYSBkaWZmZXJlbnQgcmVwZXJ0b2lyZSBmcm9t
IGFub3RoZXIgZmFjZSBvZiB0aGUgc2FtZSBmYW1pbHkuIAorLy8gaGFzIGEgZGlmZmVyZW50IHJl
cGVydG9pcmUgZnJvbSBhbm90aGVyIGZhY2Ugb2YgdGhlIHNhbWUgZmFtaWx5LgogdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IHdjaGFyX3QqLCBpY3U6OlVuaWNvZGVTZXQqPiBGb250Q21hcENhY2hlOwog
CiBzdGF0aWMgYm9vbCBmb250Q29udGFpbnNDaGFyYWN0ZXIoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSogZm9udERhdGEsCkBAIC0yNzUsMTAgKzI3NiwxMCBAQCBzdGF0aWMgYm9vbCBmb250Q29udGFp
bnNDaGFyYWN0ZXIoY29uc3QKICAgICAgICAgZm9udENtYXBDYWNoZSA9IG5ldyBGb250Q21hcENh
Y2hlOwogCiAgICAgSGFzaE1hcDxjb25zdCB3Y2hhcl90KiwgaWN1OjpVbmljb2RlU2V0Kj46Oml0
ZXJhdG9yIGl0ID0gZm9udENtYXBDYWNoZS0+ZmluZChmYW1pbHkpOwotICAgIGlmIChpdCAhPSBm
b250Q21hcENhY2hlLT5lbmQoKSkgCisgICAgaWYgKGl0ICE9IGZvbnRDbWFwQ2FjaGUtPmVuZCgp
KQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZC0+Y29udGFpbnMoY2hhcmFjdGVyKTsKLSAgICAK
LSAgICBIRk9OVCBoZm9udCA9IGZvbnREYXRhLT5oZm9udCgpOyAKKworICAgIEhGT05UIGhmb250
ID0gZm9udERhdGEtPmhmb250KCk7CiAgICAgSFduZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9s
ZEZvbnQgPSBzdGF0aWNfY2FzdDxIRk9OVD4oU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQpKTsKICAg
ICBpbnQgY291bnQgPSBHZXRGb250VW5pY29kZVJhbmdlcyhoZGMsIDApOwpAQCAtMjk0LDcgKzI5
NSw3IEBAIHN0YXRpYyBib29sIGZvbnRDb250YWluc0NoYXJhY3Rlcihjb25zdAogICAgIGdseXBo
c2V0QnVmZmVyLnJlc2l6ZShHZXRGb250VW5pY29kZVJhbmdlcyhoZGMsIDApKTsKICAgICBHTFlQ
SFNFVCogZ2x5cGhzZXQgPSByZWludGVycHJldF9jYXN0PEdMWVBIU0VUKj4oZ2x5cGhzZXRCdWZm
ZXIuZGF0YSgpKTsKICAgICAvLyBJbiBhZGRpdGlvbiwgcmVmZXJpbmcgdG8gdGhlIE9TLzIgdGFi
bGUgYW5kIGNvbnZlcnRpbmcgdGhlIGNvZGVwYWdlIGxpc3QKLSAgICAvLyB0byB0aGUgY292ZXJh
Z2UgbWFwIG1pZ2h0IGJlIGZhc3Rlci4gCisgICAgLy8gdG8gdGhlIGNvdmVyYWdlIG1hcCBtaWdo
dCBiZSBmYXN0ZXIuCiAgICAgY291bnQgPSBHZXRGb250VW5pY29kZVJhbmdlcyhoZGMsIGdseXBo
c2V0KTsKICAgICBBU1NFUlQoY291bnQgPiAwKTsKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRG
b250KTsKQEAgLTMwNSwxNCArMzA2LDE0IEBAIHN0YXRpYyBib29sIGZvbnRDb250YWluc0NoYXJh
Y3Rlcihjb25zdAogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGljdTo6VW5pY29kZVNldCogY21h
cCA9IG5ldyBpY3U6OlVuaWNvZGVTZXQ7CiAgICAgd2hpbGUgKGkgPCBnbHlwaHNldC0+Y1Jhbmdl
cykgewotICAgICAgICBXQ0hBUiBzdGFydCA9IGdseXBoc2V0LT5yYW5nZXNbaV0ud2NMb3c7IAor
ICAgICAgICBXQ0hBUiBzdGFydCA9IGdseXBoc2V0LT5yYW5nZXNbaV0ud2NMb3c7CiAgICAgICAg
IGNtYXAtPmFkZChzdGFydCwgc3RhcnQgKyBnbHlwaHNldC0+cmFuZ2VzW2ldLmNHbHlwaHMgLSAx
KTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBjbWFwLT5mcmVlemUoKTsKICAgICAvLyBXZSBk
b24ndCBsb3dlcmNhc2UgfGZhbWlseXwgYmVjYXVzZSBhbGwgb2YgdGhlbSBhcmUgdW5kZXIgb3Vy
IGNvbnRyb2wKLSAgICAvLyBhbmQgdGhleSdyZSBhbHJlYWR5IGxvd2VyY2FzZWQuIAotICAgIGZv
bnRDbWFwQ2FjaGUtPnNldChmYW1pbHksIGNtYXApOyAKKyAgICAvLyBhbmQgdGhleSdyZSBhbHJl
YWR5IGxvd2VyY2FzZWQuCisgICAgZm9udENtYXBDYWNoZS0+c2V0KGZhbWlseSwgY21hcCk7CiAg
ICAgcmV0dXJuIGNtYXAtPmNvbnRhaW5zKGNoYXJhY3Rlcik7CiB9CiAKQEAgLTM1NCw3ICszNTUs
NyBAQCBzdGF0aWMgdm9pZCBGaWxsTG9nRm9udChjb25zdCBGb250RGVzY3JpCiAgICAgd2luZm9u
dC0+bGZTdHJpa2VPdXQgPSBmYWxzZTsKICAgICB3aW5mb250LT5sZkNoYXJTZXQgPSBERUZBVUxU
X0NIQVJTRVQ7CiAgICAgd2luZm9udC0+bGZPdXRQcmVjaXNpb24gPSBPVVRfVFRfT05MWV9QUkVD
SVM7Ci0gICAgd2luZm9udC0+bGZRdWFsaXR5ID0gUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0
TW9kZSgpID8gTk9OQU5USUFMSUFTRURfUVVBTElUWSA6IERFRkFVTFRfUVVBTElUWTsgLy8gSG9u
b3IgdXNlcidzIGRlc2t0b3Agc2V0dGluZ3MuCisgICAgd2luZm9udC0+bGZRdWFsaXR5ID0gaXNS
dW5uaW5nTGF5b3V0VGVzdCgpID8gTk9OQU5USUFMSUFTRURfUVVBTElUWSA6IERFRkFVTFRfUVVB
TElUWTsgLy8gSG9ub3IgdXNlcidzIGRlc2t0b3Agc2V0dGluZ3MuCiAgICAgd2luZm9udC0+bGZQ
aXRjaEFuZEZhbWlseSA9IERFRkFVTFRfUElUQ0ggfCBGRl9ET05UQ0FSRTsKICAgICB3aW5mb250
LT5sZkl0YWxpYyA9IGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKTsKICAgICB3aW5mb250LT5sZldl
aWdodCA9IHRvR0RJRm9udFdlaWdodChmb250RGVzY3JpcHRpb24ud2VpZ2h0KCkpOwpAQCAtNDMz
LDcgKzQzNCw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnQKICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSwgJmMsICZzY3JpcHQpOwogICAg
IEZvbnRQbGF0Zm9ybURhdGEqIGRhdGEgPSAwOwogICAgIGlmIChmYW1pbHkpCi0gICAgICAgIGRh
dGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksICBB
dG9taWNTdHJpbmcoZmFtaWx5LCB3Y3NsZW4oZmFtaWx5KSksIGZhbHNlKTsgCisgICAgICAgIGRh
dGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksICBB
dG9taWNTdHJpbmcoZmFtaWx5LCB3Y3NsZW4oZmFtaWx5KSksIGZhbHNlKTsKIAogICAgIC8vIExh
c3QgcmVzb3J0IGZvbnQgbGlzdCA6IFBhblVuaWNvZGUuIENKSyBmb250cyBoYXZlIGEgcHJldHR5
CiAgICAgLy8gbGFyZ2UgcmVwZXJ0b2lyZS4gRXZlbnR1YWxseSwgd2UgbmVlZCB0byBzY2FuIGFs
bCB0aGUgZm9udHMKQEAgLTQ5Miw3ICs0OTMsNyBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRm9u
dENhY2hlOjpnZXRGb250CiAgICAgLy8gd2FycmFudCBhbiBhZGRpdGlvbmFsIChyZWFsIGNvdmVy
YWdlKSBjaGVjayB3aXRoIGZvbnRDb3RhaW5zQ2hhcmFjdGVyLgogICAgIGludCBpOwogICAgIGZv
ciAoaSA9IDA7ICghZGF0YSB8fCAhZm9udENvbnRhaW5zQ2hhcmFjdGVyKGRhdGEsIGZhbWlseSwg
YykpICYmIGkgPCBudW1Gb250czsgKytpKSB7Ci0gICAgICAgIGZhbWlseSA9IHBhblVuaUZvbnRz
W2ldOyAKKyAgICAgICAgZmFtaWx5ID0gcGFuVW5pRm9udHNbaV07CiAgICAgICAgIGRhdGEgPSBn
ZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIEF0b21pY1N0
cmluZyhmYW1pbHksIHdjc2xlbihmYW1pbHkpKSk7CiAgICAgfQogICAgIC8vIFdoZW4gaS10aCBm
b250ICgwLWJhc2UpIGluIHxwYW5VbmlGb250c3wgY29udGFpbnMgYSBjaGFyYWN0ZXIgYW5kCkBA
IC02MDMsOCArNjA0LDggQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250
UAogICAgIExPR0ZPTlQgd2luZm9udCA9IHswfTsKICAgICBGaWxsTG9nRm9udChmb250RGVzY3Jp
cHRpb24sICZ3aW5mb250KTsKIAotICAgIC8vIFdpbmRvd3Mgd2lsbCBhbHdheXMgZ2l2ZSB1cyBh
IHZhbGlkIHBvaW50ZXIgaGVyZSwgZXZlbiBpZiB0aGUgZmFjZSBuYW1lIAotICAgIC8vIGlzIG5v
bi1leGlzdGVudC4gIFdlIGhhdmUgdG8gZG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIGZhbWls
eSBuYW1lIHdhcyAKKyAgICAvLyBXaW5kb3dzIHdpbGwgYWx3YXlzIGdpdmUgdXMgYSB2YWxpZCBw
b2ludGVyIGhlcmUsIGV2ZW4gaWYgdGhlIGZhY2UgbmFtZQorICAgIC8vIGlzIG5vbi1leGlzdGVu
dC4gV2UgaGF2ZSB0byBkb3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgZmFtaWx5IG5hbWUgd2Fz
CiAgICAgLy8gcmVhbGx5IHVzZWQuCiAgICAgU3RyaW5nIHdpbk5hbWU7CiAgICAgSEZPTlQgaGZv
bnQgPSBjcmVhdGVGb250SW5kaXJlY3RBbmRHZXRXaW5OYW1lKGZhbWlseSwgJndpbmZvbnQsICZ3
aW5OYW1lKTsKQEAgLTYxNCwxNSArNjE1LDE0IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNo
ZTo6Y3JlYXRlRm9udFAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byB1c2UgcHJlZGVmaW5l
ZCBmb250cyAiZ3VhcmFudGVlZCIgdG8gZXhpc3QKICAgICAvLyB3aGVuIHdlJ3JlIHJ1bm5pbmcg
aW4gbGF5b3V0LXRlc3QgbW9kZT8KICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwg
d2luTmFtZSkpIHsKLSAgICAgICAgLy8gRm9yIENKSyBmb250cyB3aXRoIGJvdGggRW5nbGlzaCBh
bmQgbmF0aXZlIG5hbWVzLCAKKyAgICAgICAgLy8gRm9yIENKSyBmb250cyB3aXRoIGJvdGggRW5n
bGlzaCBhbmQgbmF0aXZlIG5hbWVzLAogICAgICAgICAvLyBHZXRUZXh0RmFjZSByZXR1cm5zIGEg
bmF0aXZlIG5hbWUgdW5kZXIgdGhlIGZvbnQncyAibG9jYWxlIgotICAgICAgICAvLyBhbmQgYW4g
RW5nbGlzaCBuYW1lIHVuZGVyIG90aGVyIGxvY2FsZXMgcmVnYXJkbGVzcyBvZiAKKyAgICAgICAg
Ly8gYW5kIGFuIEVuZ2xpc2ggbmFtZSB1bmRlciBvdGhlciBsb2NhbGVzIHJlZ2FyZGxlc3Mgb2YK
ICAgICAgICAgLy8gbGZGYWNlTmFtZSBmaWVsZCBvZiBMT0dGT05ULiBBcyBhIHJlc3VsdCwgd2Ug
bmVlZCB0byBjaGVjawogICAgICAgICAvLyBpZiBhIGZvbnQgaGFzIGFuIGFsdGVybmF0ZSBuYW1l
LiBJZiB0aGVyZSBpcywgd2UgbmVlZCB0bwogICAgICAgICAvLyBjb21wYXJlIGl0IHdpdGggd2hh
dCdzIHJlcXVlc3RlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCiAgICAgICAgIFN0cmluZyBhbHROYW1l
OwotICAgICAgICBpZiAoIUxvb2t1cEFsdE5hbWUoZmFtaWx5LCBhbHROYW1lKSB8fCAKLSAgICAg
ICAgICAgICFlcXVhbElnbm9yaW5nQ2FzZShhbHROYW1lLCB3aW5OYW1lKSkgeworICAgICAgICBp
ZiAoIUxvb2t1cEFsdE5hbWUoZmFtaWx5LCBhbHROYW1lKSB8fCAhZXF1YWxJZ25vcmluZ0Nhc2Uo
YWx0TmFtZSwgd2luTmFtZSkpIHsKICAgICAgICAgICAgIERlbGV0ZU9iamVjdChoZm9udCk7CiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCShyZXZpc2lvbiAxMjM0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDExICsyLDExIEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KICAqIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5j
LgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6Ci0gKiAK
KyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTYsNyArMTYsNyBAQAog
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zNSwxMiArMzUsMTIgQEAKIAogI2lmIE9TKFdJTkRP
V1MpCiAjaW5jbHVkZSAiT3BlblR5cGVVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1
cHBvcnQuaCIKICNlbGlmIE9TKFVOSVgpCiAjaW5jbHVkZSAiU2tTdHJlYW0uaCIKICNlbmRpZgog
CiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RTdXBw
b3J0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPcGVuVHlwZVNh
bml0aXplci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtODMsNyArODMsNyBAQCBG
b250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6CiAgICAgICAgICAgIHNpemVv
Zihsb2dGb250LmxmRmFjZU5hbWVbMF0pICogKDEgKyBtX25hbWUubGVuZ3RoKCkpKTsKIAogICAg
IC8vIEZJWE1FOiBhbG1vc3QgaWRlbnRpY2FsIHRvIEZpbGxMb2dGb250IGluIEZvbnRDYWNoZVdp
bi5jcHAuCi0gICAgLy8gTmVlZCB0byByZWZhY3Rvci4gCisgICAgLy8gTmVlZCB0byByZWZhY3Rv
ci4KICAgICBsb2dGb250LmxmSGVpZ2h0ID0gLXNpemU7CiAgICAgbG9nRm9udC5sZldpZHRoID0g
MDsKICAgICBsb2dGb250LmxmRXNjYXBlbWVudCA9IDA7CkBAIC05Miw3ICs5Miw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YToKICAgICBsb2dGb250LmxmU3RyaWtl
T3V0ID0gZmFsc2U7CiAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7CiAg
ICAgbG9nRm9udC5sZk91dFByZWNpc2lvbiA9IE9VVF9UVF9PTkxZX1BSRUNJUzsKLSAgICBsb2dG
b250LmxmUXVhbGl0eSA9IFBsYXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSA/CisgICAg
bG9nRm9udC5sZlF1YWxpdHkgPSBpc1J1bm5pbmdMYXlvdXRUZXN0KCkgPwogICAgICAgICAgICAg
ICAgICAgICAgICAgTk9OQU5USUFMSUFTRURfUVVBTElUWSA6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBERUZBVUxUX1FVQUxJVFk7IC8vIEhvbm9yIHVzZXIncyBkZXNrdG9wIHNldHRpbmdzLgog
ICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IERFRkFVTFRfUElUQ0ggfCBGRl9ET05UQ0FS
RTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udFNraWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
Rm9udFNraWEuY3BwCShyZXZpc2lvbiAxMjM0MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ZvbnRTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwx
MCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogCisgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6
Ci0gKiAKKyAqCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpAQCAtMTQsNyArMTQs
NyBAQAogICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwogICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KICAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCiAg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAogICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkBAIC0zMyw4ICszMyw4IEBACiAKICNpbmNsdWRl
ICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkxheW91dFRlc3RTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgi
CiAKICNpbmNsdWRlICJTa0NhbnZhcy5oIgpAQCAtODMsNyArODMsNyBAQCB2b2lkIEZvbnQ6OmRy
YXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnCiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRz
ID0gdHJ1ZTsKICAgICBib29sIHNob3VsZEFudGlhbGlhcyA9IHRydWU7Ci0gICAgCisKICAgICBz
d2l0Y2ggKGZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSkgewogICAgIGNhc2UgQW50
aWFsaWFzZWQ6CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFsc2U7CkBAIC05NiwxMCAr
OTYsMTAgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEF1dG9TbW9vdGhpbmc6CiAgICAgICAgIC8vIEZvciB0aGUgQXV0
b1Ntb290aCBjYXNlLCBkb24ndCBkbyBhbnl0aGluZyEgS2VlcCB0aGUgZGVmYXVsdCBzZXR0aW5n
cy4KLSAgICAgICAgYnJlYWs7IAorICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCi0gICAgaWYg
KCFzaG91bGRVc2VTbW9vdGhpbmcoKSB8fCBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2Rl
KCkpCisKKyAgICBpZiAoIXNob3VsZFVzZVNtb290aGluZygpIHx8IGlzUnVubmluZ0xheW91dFRl
c3QoKSkKICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSBmYWxzZTsKIAogICAgIGNvbnN0IEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1BbmRyb2lkLmNwcAkocmV2aXNpb24gMTIzNDE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNv
bG9yLmgiCisjaW5jbHVkZSAiTGF5b3V0VGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJQYWludElu
Zm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJSZW5kZXJNZWRp
YUNvbnRyb2xzQ2hyb21pdW0uaCIKQEAgLTU2LDcgKzU3LDcgQEAgUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6On5SZW5kZXJUaGVtZQogCiBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6c3lzdGVtQ29sb3IoaW50IGNzc1ZhbHVlSWQpIGNvbnN0CiB7Ci0gICAgaWYgKFBsYXRmb3Jt
U3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSAmJiBjc3NWYWx1ZUlkID09IENTU1ZhbHVlQnV0dG9u
ZmFjZSkgeworICAgIGlmIChpc1J1bm5pbmdMYXlvdXRUZXN0KCkgJiYgY3NzVmFsdWVJZCA9PSBD
U1NWYWx1ZUJ1dHRvbmZhY2UpIHsKICAgICAgICAgLy8gTWF0Y2ggQ2hyb21pdW0gTGludXgnIGJ1
dHRvbiBjb2xvciBpbiBsYXlvdXQgdGVzdHMuCiAgICAgICAgIHN0YXRpYyBjb25zdCBDb2xvciBs
aW51eEJ1dHRvbkdyYXlDb2xvcigweGZmZGRkZGRkKTsKICAgICAgICAgcmV0dXJuIGxpbnV4QnV0
dG9uR3JheUNvbG9yOwpAQCAtNzcsNyArNzgsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6OmV4dHJhCiAKIHZvaWQgUmVuZGVyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmFkanVz
dElubmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAogewotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RN
b2RlKCkpIHsKKyAgICBpZiAoaXNSdW5uaW5nTGF5b3V0VGVzdCgpKSB7CiAgICAgICAgIC8vIE1h
dGNoIENocm9taXVtIExpbnV4IHNwaW4gYnV0dG9uIHN0eWxlIGluIGxheW91dCB0ZXN0cy4KICAg
ICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHJlbW92aW5nIHRoZSBjb25kaXRpb25hbCBpZiBhIGZ1
dHVyZSBBbmRyb2lkIHRoZW1lIG1hdGNoZXMgdGhpcy4KICAgICAgICAgSW50U2l6ZSBzaXplID0g
UGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydElu
bmVyU3BpbkJ1dHRvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gMTIzNDE3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxLDEwICsyMSwxMCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkNhbGVu
ZGFyUGlja2VyTWFjLmgiCisjaW1wb3J0ICJMYXlvdXRUZXN0U3VwcG9ydC5oIgogI2ltcG9ydCAi
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJSZW5kZXJUaGVtZUNocm9t
aXVtTWFjLmgiCiAjaW1wb3J0ICJQYWludEluZm8uaCIKLSNpbXBvcnQgIlBsYXRmb3JtU3VwcG9y
dC5oIgogI2ltcG9ydCAiUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5o
IgpAQCAtODAsNyArODAsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnN1cHBvcnRz
RGF0CiAKIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6dXNlc1Rlc3RNb2RlRm9jdXNSaW5n
Q29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RN
b2RlKCk7CisgICAgcmV0dXJuIGlzUnVubmluZ0xheW91dFRlc3QoKTsKIH0KIAogTlNWaWV3KiBS
ZW5kZXJUaGVtZUNocm9taXVtTWFjOjpkb2N1bWVudFZpZXdGb3IoUmVuZGVyT2JqZWN0KikgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tp
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhLmNwcAkocmV2aXNpb24gMTIzNDE3KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
OSArMjksOSBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkxheW91dFRlc3RTdXBwb3J0
LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJQYWludElu
Zm8uaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRTa2lhLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVk
aWFDb250cm9sc0Nocm9taXVtLmgiCkBAIC0xNjAsNyArMTYwLDcgQEAgZG91YmxlIFJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjpjYXJldEJsaQogewogICAgIC8vIERpc2FibGUgdGhlIGJsaW5raW5n
IGNhcmV0IGluIGxheW91dCB0ZXN0IG1vZGUsIGFzIGl0IGludHJvZHVjZXMKICAgICAvLyBhIHJh
Y2UgY29uZGl0aW9uIGZvciB0aGUgcGl4ZWwgdGVzdHMuIGh0dHA6Ly9iLzExOTg0NDAKLSAgICBp
ZiAoUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgIGlmIChpc1J1bm5pbmdM
YXlvdXRUZXN0KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIGNhcmV0QmxpbmtJ
bnRlcnZhbEludGVybmFsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDaHJvbWl1bVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiAxMjM0MTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCisjaW5jbHVkZSAiTGF5
b3V0VGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgpAQCAtMjQ3
LDcgKzI0OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6c3VwcG9ydHNGb2MKIAog
Q29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAogewotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRl
c3RNb2RlKCkpCisgICAgaWYgKGlzUnVubmluZ0xheW91dFRlc3QoKSkKICAgICAgICAgcmV0dXJu
IENvbG9yKDB4MDAsIDB4MDAsIDB4ZmYpOyAvLyBSb3lhbCBibHVlLgogICAgIENPTE9SUkVGIGNv
bG9yID0gR2V0U3lzQ29sb3IoQ09MT1JfSElHSExJR0hUKTsKICAgICByZXR1cm4gQ29sb3IoR2V0
UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSwgMHhmZik7
CkBAIC0yNTUsNyArMjU2LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZv
cm1BYwogCiBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwbGF0Zm9ybUluYWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0
OjpsYXlvdXRUZXN0TW9kZSgpKQorICAgIGlmIChpc1J1bm5pbmdMYXlvdXRUZXN0KCkpCiAgICAg
ICAgIHJldHVybiBDb2xvcigweDk5LCAweDk5LCAweDk5KTsgLy8gTWVkaXVtIGdyYXkuCiAgICAg
Q09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9HUkFZVEVYVCk7CiAgICAgcmV0dXJu
IENvbG9yKEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xv
ciksIDB4ZmYpOwpAQCAtMjYzLDcgKzI2NCw3IEBAIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1X
aW46OnBsYXRmb3JtSW4KIAogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGxhdGZvcm1B
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogewotICAgIGlmIChQbGF0Zm9y
bVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkpCisgICAgaWYgKGlzUnVubmluZ0xheW91dFRlc3Qo
KSkKICAgICAgICAgcmV0dXJuIENvbG9yKDB4ZmYsIDB4ZmYsIDB4Y2MpOyAvLyBQYWxlIHllbGxv
dy4KICAgICBDT0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKENPTE9SX0hJR0hMSUdIVFRFWFQp
OwogICAgIHJldHVybiBDb2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBH
ZXRCVmFsdWUoY29sb3IpLCAweGZmKTsKQEAgLTM4NCw3ICszODUsNyBAQCBzdGF0aWMgaW50IGNz
c1ZhbHVlSWRUb1N5c0NvbG9ySW5kZXgoaW50CiBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtV2lu
OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29uc3QKIHsKICAgICBpbnQgc3lzQ29sb3JJ
bmRleCA9IGNzc1ZhbHVlSWRUb1N5c0NvbG9ySW5kZXgoY3NzVmFsdWVJZCk7Ci0gICAgaWYgKFBs
YXRmb3JtU3VwcG9ydDo6bGF5b3V0VGVzdE1vZGUoKSB8fCAoc3lzQ29sb3JJbmRleCA9PSAtMSkp
CisgICAgaWYgKGlzUnVubmluZ0xheW91dFRlc3QoKSB8fCAoc3lzQ29sb3JJbmRleCA9PSAtMSkp
CiAgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CiAK
ICAgICBDT0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKHN5c0NvbG9ySW5kZXgpOwpAQCAtNDc5
LDcgKzQ4MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRTbGlkZXIKIAog
c3RhdGljIGludCBtZW51TGlzdEJ1dHRvbldpZHRoKCkKIHsKLSAgICBzdGF0aWMgaW50IHdpZHRo
ID0gUGxhdGZvcm1TdXBwb3J0OjpsYXlvdXRUZXN0TW9kZSgpID8ga1N0YW5kYXJkTWVudUxpc3RC
dXR0b25XaWR0aCA6IEdldFN5c3RlbU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKKyAgICBzdGF0aWMg
aW50IHdpZHRoID0gaXNSdW5uaW5nTGF5b3V0VGVzdCgpID8ga1N0YW5kYXJkTWVudUxpc3RCdXR0
b25XaWR0aCA6IEdldFN5c3RlbU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKICAgICByZXR1cm4gd2lk
dGg7CiB9CiAKQEAgLTYwMyw3ICs2MDQsNyBAQCB1bnNpZ25lZCBSZW5kZXJUaGVtZUNocm9taXVt
V2luOjpkZXRlcm1pCiAKICAgICAvLyBTbyBhcmUgcmVhZG9ubHkgdGV4dCBmaWVsZHMuCiAgICAg
aWYgKGlzUmVhZE9ubHlDb250cm9sKG8pICYmIChwYXJ0ID09IFRleHRGaWVsZFBhcnQgfHwgcGFy
dCA9PSBUZXh0QXJlYVBhcnQgfHwgcGFydCA9PSBTZWFyY2hGaWVsZFBhcnQpKQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OyAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgaWYgKHBhcnQg
PT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGlj
YWxQYXJ0KSB7CiAgICAgICAgIGlmICghaXNFbmFibGVkKG8pKQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzQxOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMjMgIE1h
cmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
TW92ZSBsYXlvdXRUZXN0TW9kZSB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0
cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpzZXRMYXlvdXRUZXN0TW9kZSk6CisgICAgICAgIChXZWJLaXQ6OmxheW91dFRlc3RN
b2RlKToKKwogMjAxMi0wNy0yMyAgQnJpYW4gQW5kZXJzb24gIDxicmlhbmRlcnNvbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVc2Ugc2hhbGxvdyBmbHVzaGVzIHRoYXQgZG9u
J3QgZ2xGbHVzaApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjM0MTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsMTMgKzMwMiw2
IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0Zm8KICAgICByZXR1cm4g
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUo
a2V5LCB2YWx1ZSwga2V5UGF0aCk7CiB9CiAKLS8vIExheW91dFRlc3RNb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotYm9v
bCBQbGF0Zm9ybVN1cHBvcnQ6OmxheW91dFRlc3RNb2RlKCkKLXsKLSAgICByZXR1cm4gV2ViS2l0
OjpsYXlvdXRUZXN0TW9kZSgpOwotfQotCiAvLyBQbHVnaW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGJvb2wg
UGxhdGZvcm1TdXBwb3J0OjpwbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbkluZm8+
KiByZXN1bHRzKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCShyZXZp
c2lvbiAxMjM0MTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAKKyNpbmNsdWRlICJMYXlvdXRUZXN0U3VwcG9ydC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpAQCAtODEsNyArODIsNiBAQCBzdGF0aWMgV2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIq
IHNfZW5kT2ZUCiBzdGF0aWMgYm9vbCBzX3dlYktpdEluaXRpYWxpemVkID0gZmFsc2U7CiAKIHN0
YXRpYyBXZWJLaXRQbGF0Zm9ybVN1cHBvcnQqIHNfd2ViS2l0UGxhdGZvcm1TdXBwb3J0ID0gMDsK
LXN0YXRpYyBib29sIHNfbGF5b3V0VGVzdE1vZGUgPSBmYWxzZTsKIAogc3RhdGljIGJvb2wgZ2Vu
ZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKIHsKQEAg
LTE3NiwxMiArMTc2LDEyIEBAIFdlYktpdFBsYXRmb3JtU3VwcG9ydCogd2ViS2l0UGxhdGZvcm1T
dXAKIAogdm9pZCBzZXRMYXlvdXRUZXN0TW9kZShib29sIHZhbHVlKQogewotICAgIHNfbGF5b3V0
VGVzdE1vZGUgPSB2YWx1ZTsKKyAgICBXZWJDb3JlOjpzZXRJc1J1bm5pbmdMYXlvdXRUZXN0KHZh
bHVlKTsKIH0KIAogYm9vbCBsYXlvdXRUZXN0TW9kZSgpCiB7Ci0gICAgcmV0dXJuIHNfbGF5b3V0
VGVzdE1vZGU7CisgICAgcmV0dXJuIFdlYkNvcmU6OmlzUnVubmluZ0xheW91dFRlc3QoKTsKIH0K
IAogdm9pZCBlbmFibGVMb2dDaGFubmVsKGNvbnN0IGNoYXIqIG5hbWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>