<?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>92927</bug_id>
          
          <creation_ts>2012-08-01 17:49:53 -0700</creation_ts>
          <short_desc>Switch mapLocalToContainer to use a flag instead of boolean parameters</short_desc>
          <delta_ts>2012-08-03 15:24:02 -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>Layout and Rendering</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>
          
          <blocked>89238</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>684821</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-01 17:49:53 -0700</bug_when>
    <thetext>I intend on adding another mode of operation for bug switching between pixel snapping which will further complicate the current contract.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685532</commentid>
    <comment_count>1</comment_count>
      <attachid>156114</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-02 10:12:17 -0700</bug_when>
    <thetext>Created attachment 156114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685551</commentid>
    <comment_count>2</comment_count>
      <attachid>156114</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-02 10:34:07 -0700</bug_when>
    <thetext>Comment on attachment 156114
Patch

Attachment 156114 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13425302</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685562</commentid>
    <comment_count>3</comment_count>
      <attachid>156114</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-08-02 10:41:07 -0700</bug_when>
    <thetext>Comment on attachment 156114
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp:193
&gt; +void RenderSVGForeignObject::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const

You need to comment it out, or flag it unused.

&gt; Source/WebCore/rendering/svg/RenderSVGInline.cpp:82
&gt; +void RenderSVGInline::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const

Ditto.

&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:58
&gt; +void RenderSVGModelObject::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685610</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-02 11:26:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 156114 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156114&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp:193
&gt; &gt; +void RenderSVGForeignObject::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const
&gt; 
&gt; You need to comment it out, or flag it unused.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGInline.cpp:82
&gt; &gt; +void RenderSVGInline::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:58
&gt; &gt; +void RenderSVGModelObject::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const
&gt; 
&gt; Ditto.

Of course, thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685795</commentid>
    <comment_count>5</comment_count>
      <attachid>156161</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-02 14:06:15 -0700</bug_when>
    <thetext>Created attachment 156161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686182</commentid>
    <comment_count>6</comment_count>
      <attachid>156161</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-08-02 20:21:52 -0700</bug_when>
    <thetext>Comment on attachment 156161
Patch

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

LGTM. Just some snippets, r=me.

&gt; Source/WebCore/rendering/svg/RenderSVGForeignObject.cpp:195
&gt; +void RenderSVGForeignObject::mapLocalToContainer(RenderBoxModelObject* repaintContainer, TransformState&amp; transformState, MapLocalToContainerFlags mode, bool* wasFixed) const
&gt;  {
&gt; +    UNUSED_PARAM(mode);

Sorry for not mention it before. But isn&apos;t it easier to just not use &apos;mode&apos;? I think MapLocalToContainerFlags is self descriptive.

&gt; Source/WebCore/rendering/svg/RenderSVGInline.cpp:84
&gt; +    UNUSED_PARAM(mode);

Ditto.

&gt; Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:60
&gt; +    UNUSED_PARAM(mode);

Ditto.

&gt; Source/WebCore/rendering/svg/RenderSVGText.cpp:116
&gt; +    UNUSED_PARAM(mode);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686913</commentid>
    <comment_count>7</comment_count>
      <attachid>156410</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-03 10:27:08 -0700</bug_when>
    <thetext>Created attachment 156410
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687196</commentid>
    <comment_count>8</comment_count>
      <attachid>156410</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 15:23:58 -0700</bug_when>
    <thetext>Comment on attachment 156410
Patch for landing

Clearing flags on attachment: 156410

Committed r124662: &lt;http://trac.webkit.org/changeset/124662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687197</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 15:24:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156114</attachid>
            <date>2012-08-02 10:12:17 -0700</date>
            <delta_ts>2012-08-02 14:06:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92927-20120802101158.patch</filename>
            <type>text/plain</type>
            <size>31864</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA4LTAxICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBTd2l0Y2ggbWFwTG9jYWxU
b0NvbnRhaW5lciB0byB1c2UgYSBmbGFnIGluc3RlYWQgb2YgYm9vbGVhbiBwYXJhbWV0ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5naW5nIG1h
cExvY2FsVG9Db250YWluZXIgdG8gdXNlIGEgdWludCBmbGFnIHRvIHNldCB0aGUgbW9kZSBvZiBv
cGVyYXRpb24uIFRoaXMgcmVtb3ZlcworICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb250cmFjdCwg
cmVtb3ZlcyBib29sZWFuIGFyZ3VtZW50cyBhbmQgcGF2ZXMgdGhlIHdheSBmb3IgYW4gYWRkaXRp
b25hbCBtb2RlCisgICAgICAgIGZvciBzdWItcGl4ZWwgbGF5b3V0IHN1cHBvcnQuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMzggZm9yIHRoZQorICAgICAg
ICBzdWItcGl4ZWwgdXNlIGNhc2UuIE90aGVyIHRoYW4gdGhlIG5ldyBNYXBMb2NhbFRvQ29udGFp
bmVyTW9kZSBlbnVtIGFuZCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MKKyAgICAgICAgdHlwZWRl
ZiwgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IG1lY2hhbmljYWwuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGFzIHRoaXMgZG9lc24ndCBjaGFuZ2UgY3VycmVudCBiZWhhdmlvci4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRh
aW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVuZGVy
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQWJzb2x1dGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5s
aW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJz
b2x1dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFp
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1
YWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFJlbmRl
ck9iamVjdCk6IEFkZGluZyB0aGUgTWFwTG9jYWxUb0NvbnRhaW5lck1vZGUgZW51bSBhbmQgTWFw
TG9jYWxUb0NvbnRhaW5lckZsYWdzIHVuc2lnbmVkCisgICAgICAgIGludCwgYW5kIHJlbW92aW5n
IHRoZSBvbGQgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgZW51bS4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBMb2Nh
bFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAg
ICAoUmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5oOgorICAgICAgICAoUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW5saW5lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgIChS
ZW5kZXJTVkdNb2RlbE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250
YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAg
ICAoUmVuZGVyU1ZHUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAgICAo
UmVuZGVyU1ZHVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250
YWluZXIpOgorCiAyMDEyLTA4LTAxICBBbnRvaW5lIExhYm91ciAgPHBpbWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIGZhY3RvciBvdXQgdGhlIG9wdGltaXphdGlvbiBwYXNz
IGluIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDEyNDM2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMDUsNyAr
MzIwNSw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0YKIAogICAg
IC8vIEZJWE1FOiB0aGlzIGlzIGJyb2tlbiB3aXRoIHRyYW5zZm9ybXMKICAgICBUcmFuc2Zvcm1T
dGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rp
b24sIEZsb2F0UG9pbnQoKSk7Ci0gICAgbWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBmYWxzZSwgZmFsc2UsIHRyYW5zZm9ybVN0YXRlKTsKKyAgICBtYXBMb2NhbFRvQ29udGFp
bmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlKTsKICAgICBMYXlvdXRQb2ludCBv
ZmZzZXRGcm9tUmVwYWludENvbnRhaW5lciA9IHJvdW5kZWRMYXlvdXRQb2ludCh0cmFuc2Zvcm1T
dGF0ZS5tYXBwZWRQb2ludCgpKTsKIAogICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxMjQzNjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI1Miw3ICsxMjUyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OnBlcnBlbmRpY3VsYXJD
b250YQogICAgIHJldHVybiBjYi0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2lj
YWxIZWlnaHRMZW5ndGgudmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZp
eGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
QXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5k
ZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50
Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNzgsMTcgKzEyNzgsMTcg
QEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZAogICAgIC8vIElmIHRo
aXMgYm94IGhhcyBhIHRyYW5zZm9ybSwgaXQgYWN0cyBhcyBhIGZpeGVkIHBvc2l0aW9uIGNvbnRh
aW5lciBmb3IgZml4ZWQgZGVzY2VuZGFudHMsCiAgICAgLy8gYW5kIG1heSBpdHNlbGYgYWxzbyBi
ZSBmaXhlZCBwb3NpdGlvbi4gU28gcHJvcGFnYXRlICdmaXhlZCcgdXAgb25seSBpZiB0aGlzIGJv
eCBpcyBmaXhlZCBwb3NpdGlvbi4KICAgICBpZiAoaGFzVHJhbnNmb3JtICYmICFpc0ZpeGVkUG9z
KQotICAgICAgICBmaXhlZCA9IGZhbHNlOworICAgICAgICBtb2RlICY9IH5Jc0ZpeGVkOwogICAg
IGVsc2UgaWYgKGlzRml4ZWRQb3MpCi0gICAgICAgIGZpeGVkID0gdHJ1ZTsKKyAgICAgICAgbW9k
ZSB8PSBJc0ZpeGVkOwogCiAgICAgaWYgKHdhc0ZpeGVkKQotICAgICAgICAqd2FzRml4ZWQgPSBm
aXhlZDsKKyAgICAgICAgKndhc0ZpeGVkID0gbW9kZSAmIElzRml4ZWQ7CiAgICAgCiAgICAgTGF5
b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIHJvdW5kZWRM
YXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7CiAgICAgCi0gICAgYm9v
bCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0Qo
KSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBz
aG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CisgICAgYm9vbCBwcmVzZXJ2ZTNE
ID0gbW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwg
c3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7CisgICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYm
IHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdDsKICAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250
YWluZXJPZmZzZXQsIHQpOwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0
LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFu
c2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CkBAIC0xMzAzLDE1ICsxMzAzLDE2IEBAIHZv
aWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIG1vZGUgJj0gfkFwcGx5Q29udGFpbmVyRmxpcDsKICAgICBpZiAoby0+aXNS
ZW5kZXJGbG93VGhyZWFkKCkpIHsKICAgICAgICAgLy8gVHJhbnNmb3JtIGZyb20gcmVuZGVyIGZs
b3cgY29vcmRpbmF0ZXMgaW50byByZWdpb24gY29vcmRpbmF0ZXMuCiAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gdG9SZW5kZXJGbG93VGhyZWFkKG8pLT5tYXBGcm9tRmxvd1RvUmVnaW9u
KHRyYW5zZm9ybVN0YXRlKTsKICAgICAgICAgaWYgKHJlZ2lvbikKLSAgICAgICAgICAgIHJlZ2lv
bi0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZWdpb24tPmNvbnRhaW5lckZvclJlcGFpbnQoKSwgZml4
ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBEb05vdEFwcGx5Q29udGFpbmVyRmxp
cCwgd2FzRml4ZWQpOworICAgICAgICAgICAgcmVnaW9uLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJl
Z2lvbi0+Y29udGFpbmVyRm9yUmVwYWludCgpLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4
ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgby0+bWFwTG9jYWxUb0NvbnRhaW5l
cihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUs
IERvTm90QXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgby0+bWFwTG9jYWxUb0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQp
OwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVy
R2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gMTI0MzY2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTgsNyArNTE4LDcgQEAgcHJvdGVj
dGVkOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQo
KSBjb25zdCB7IHJldHVybiBpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRh
YmxlKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5z
Zm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNv
bnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QqLCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRy
YW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAkocmV2aXNpb24gMTI0MzY2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsOCArOTIsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Fi
c29sdXRlKFRyCiB7CiAgICAgLy8gSWYgdGhlIG1hcHBpbmcgaW5jbHVkZXMgc29tZXRoaW5nIGxp
a2UgY29sdW1ucywgd2UgaGF2ZSB0byBnbyB2aWEgcmVuZGVyZXJzLgogICAgIGlmIChoYXNOb25V
bmlmb3JtU3RlcCgpKSB7Ci0gICAgICAgIGJvb2wgZml4ZWQgPSBmYWxzZTsKLSAgICAgICAgbV9t
YXBwaW5nLmxhc3QoKS5tX3JlbmRlcmVyLT5tYXBMb2NhbFRvQ29udGFpbmVyKDAsIGZpeGVkLCB0
cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgUmVuZGVyT2JqZWN0OjpBcHBseUNvbnRhaW5lckZsaXApOwor
ICAgICAgICBtX21hcHBpbmcubGFzdCgpLm1fcmVuZGVyZXItPm1hcExvY2FsVG9Db250YWluZXIo
MCwgdHJhbnNmb3JtU3RhdGUsIFVzZVRyYW5zZm9ybXMgfCBBcHBseUNvbnRhaW5lckZsaXApOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDEyNDM2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE0LDcgKzEx
MTQsNyBAQCBMYXlvdXRTaXplIFJlbmRlcklubGluZTo6b2Zmc2V0RnJvbUNvbnRhCiAgICAgcmV0
dXJuIG9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCBhcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFw
TG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzUs
MTggKzExMzUsMTggQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUgog
ICAgIGlmICghbykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFwcGx5Q29udGFpbmVyRmxp
cCAmJiBvLT5pc0JveCgpKSB7CisgICAgaWYgKG1vZGUgJiBBcHBseUNvbnRhaW5lckZsaXAgJiYg
by0+aXNCb3goKSkgewogICAgICAgICBpZiAoby0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUoKSkgewogICAgICAgICAgICAgSW50UG9pbnQgY2VudGVyUG9pbnQgPSByb3VuZGVk
SW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSk7CiAgICAgICAgICAgICB0cmFu
c2Zvcm1TdGF0ZS5tb3ZlKHRvUmVuZGVyQm94KG8pLT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRp
bmdDb2x1bW5zKGNlbnRlclBvaW50KSAtIGNlbnRlclBvaW50KTsKICAgICAgICAgfQotICAgICAg
ICBhcHBseUNvbnRhaW5lckZsaXAgPSBEb05vdEFwcGx5Q29udGFpbmVyRmxpcDsKKyAgICAgICAg
bW9kZSAmPSB+QXBwbHlDb250YWluZXJGbGlwOwogICAgIH0KIAogICAgIExheW91dFNpemUgY29u
dGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCByb3VuZGVkTGF5b3V0UG9pbnQo
dHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOwogCi0gICAgYm9vbCBwcmVzZXJ2ZTNEID0g
dXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLT5w
cmVzZXJ2ZXMzRCgpKTsKLSAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKG8pKSB7CisgICAgYm9vbCBwcmVzZXJ2ZTNEID0gbW9kZSAmIFVzZVRy
YW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2Vy
dmVzM0QoKSk7CisgICAgaWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5z
Zm9ybUZyb21Db250YWluZXIobykpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsK
ICAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQp
OwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8g
VHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6Rmxh
dHRlblRyYW5zZm9ybSk7CkBAIC0xMTYxLDcgKzExNjEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6
bWFwTG9jYWxUb0NvbnRhaW5lcihSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvLT5t
YXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1z
LCB0cmFuc2Zvcm1TdGF0ZSwgYXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgby0+
bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9k
ZSwgd2FzRml4ZWQpOwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlcklubGluZTo6cHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JU
b1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24gMTI0MzY2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdp
dGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250
YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0Nv
bnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0g
MCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTI0MzY2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5ODcsNyArMTk4NywxMiBAQCBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmlld1Jl
Y3QoKSBjb25zCiBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0Fic29sdXRlKGNvbnN0
IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jtcykg
Y29uc3QKIHsKICAgICBUcmFuc2Zvcm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0
ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24sIGxvY2FsUG9pbnQpOwotICAgIG1hcExvY2FsVG9D
b250YWluZXIoMCwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKKyAgICBN
YXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcDsKKyAgICBp
ZiAoZml4ZWQpCisgICAgICAgIG1vZGUgfD0gSXNGaXhlZDsKKyAgICBpZiAodXNlVHJhbnNmb3Jt
cykKKyAgICAgICAgbW9kZSB8PSBVc2VUcmFuc2Zvcm1zOworICAgIG1hcExvY2FsVG9Db250YWlu
ZXIoMCwgdHJhbnNmb3JtU3RhdGUsIG1vZGUpOwogICAgIHRyYW5zZm9ybVN0YXRlLmZsYXR0ZW4o
KTsKICAgICAKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CkBA
IC0yMDAyLDcgKzIwMDcsNyBAQCBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xv
Y2FsCiAgICAgcmV0dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQb2ludCgpOwogfQogCi12
b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90IGFwcGx5
Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6
bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWlu
ZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMjAxMywxMCArMjAxOCwxMCBAQCB2b2lk
IFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSCiAKICAgICAvLyBGSVhNRTogdGhp
cyBzaG91bGQgY2FsbCBvZmZzZXRGcm9tQ29udGFpbmVyIHRvIHNoYXJlIGNvZGUsIGJ1dCBJJ20g
bm90IHN1cmUgaXQncyBldmVyIGNhbGxlZC4KICAgICBMYXlvdXRQb2ludCBjZW50ZXJQb2ludCA9
IHJvdW5kZWRMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKTsKLSAgICBp
ZiAoYXBwbHlDb250YWluZXJGbGlwICYmIG8tPmlzQm94KCkpIHsKKyAgICBpZiAobW9kZSAmIEFw
cGx5Q29udGFpbmVyRmxpcCAmJiBvLT5pc0JveCgpKSB7CiAgICAgICAgIGlmIChvLT5zdHlsZSgp
LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgdHJhbnNmb3JtU3Rh
dGUubW92ZSh0b1JlbmRlckJveChvKS0+ZmxpcEZvcldyaXRpbmdNb2RlSW5jbHVkaW5nQ29sdW1u
cyhyb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpIC0gY2Vu
dGVyUG9pbnQpOwotICAgICAgICBhcHBseUNvbnRhaW5lckZsaXAgPSBEb05vdEFwcGx5Q29udGFp
bmVyRmxpcDsKKyAgICAgICAgbW9kZSAmPSB+QXBwbHlDb250YWluZXJGbGlwOwogICAgIH0KIAog
ICAgIExheW91dFNpemUgY29sdW1uT2Zmc2V0OwpAQCAtMjAyNyw3ICsyMDMyLDcgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUgogICAgIGlmIChvLT5oYXNPdmVyZmxv
d0NsaXAoKSkKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtdG9SZW5kZXJCb3gobyktPnNj
cm9sbGVkQ29udGVudE9mZnNldCgpKTsKIAotICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVw
YWludENvbnRhaW5lciwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBhcHBs
eUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKKyAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJl
cGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKIGNv
bnN0IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CkBAIC0yMTAxLDcgKzIxMDYsMTAgQEAgRmxvYXRRdWFk
IFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lcgogICAgIC8vIFRyYWNrIHRoZSBwb2ludCBh
dCB0aGUgY2VudGVyIG9mIHRoZSBxdWFkJ3MgYm91bmRpbmcgYm94LiBBcyBtYXBMb2NhbFRvQ29u
dGFpbmVyKCkgY2FsbHMgb2Zmc2V0RnJvbUNvbnRhaW5lcigpLAogICAgIC8vIGl0IHdpbGwgdXNl
IHRoYXQgcG9pbnQgYXMgdGhlIHJlZmVyZW5jZSBwb2ludCB0byBkZWNpZGUgd2hpY2ggY29sdW1u
J3MgdHJhbnNmb3JtIHRvIGFwcGx5IGluIG11bHRpcGxlLWNvbHVtbiBibG9ja3MuCiAgICAgVHJh
bnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6OkFwcGx5VHJhbnNmb3Jt
RGlyZWN0aW9uLCBsb2NhbFF1YWQuYm91bmRpbmdCb3goKS5jZW50ZXIoKSwgbG9jYWxRdWFkKTsK
LSAgICBtYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0
cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgTWFwTG9j
YWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBVc2VUcmFuc2Zv
cm1zOworICAgIGlmIChmaXhlZCkKKyAgICAgICAgbW9kZSB8PSBJc0ZpeGVkOworICAgIG1hcExv
Y2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdh
c0ZpeGVkKTsKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7CiAgICAgCiAgICAgcmV0dXJu
IHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJRdWFkKCk7CkBAIC0yMTEwLDcgKzIxMTgsMTAgQEAg
RmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lcgogRmxvYXRQb2ludCBSZW5k
ZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBsb2NhbFBv
aW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3Rh
dGUoVHJhbnNmb3JtU3RhdGU6OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsK
LSAgICBtYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0
cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgTWFwTG9j
YWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBVc2VUcmFuc2Zv
cm1zOworICAgIGlmIChmaXhlZCkKKyAgICAgICAgbW9kZSB8PSBJc0ZpeGVkOworICAgIG1hcExv
Y2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdh
c0ZpeGVkKTsKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7CiAKICAgICByZXR1cm4gdHJh
bnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMjQzNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsMTMg
QEAgZW51bSBQbGFjZUdlbmVyYXRlZFJ1bkluRmxhZyB7CiAgICAgRG9Ob3RQbGFjZUdlbmVyYXRl
ZFJ1bkluCiB9OwogCitlbnVtIE1hcExvY2FsVG9Db250YWluZXJNb2RlIHsKKyAgICBJc0ZpeGVk
ID0gMSA8PCAwLAorICAgIFVzZVRyYW5zZm9ybXMgPSAxIDw8IDEsCisgICAgQXBwbHlDb250YWlu
ZXJGbGlwID0gMSA8PCAyCit9OwordHlwZWRlZiB1bnNpZ25lZCBNYXBMb2NhbFRvQ29udGFpbmVy
RmxhZ3M7CisKIGNvbnN0IGludCBjYXJldFdpZHRoID0gMTsKIAogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKQEAgLTg3OCw4ICs4ODUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXAgcG9p
bnRzIGFuZCBxdWFkcyB0aHJvdWdoIGVsZW1lbnRzLCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNm
b3Jtcy4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQog
ICAgIC8vIGxvY2FsVG9BYnNvbHV0ZS9hYnNvbHV0ZVRvTG9jYWwgbWV0aG9kcyBpbnN0ZWFkLgot
ICAgIGVudW0gQXBwbHlDb250YWluZXJGbGlwT3JOb3QgeyBEb05vdEFwcGx5Q29udGFpbmVyRmxp
cCwgQXBwbHlDb250YWluZXJGbGlwIH07Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJh
bnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBP
ck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxh
Z3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gUHVzaGVz
IHN0YXRlIG9udG8gUmVuZGVyR2VvbWV0cnlNYXAgYWJvdXQgaG93IHRvIG1hcCBjb29yZGluYXRl
cyBmcm9tIHRoaXMgcmVuZGVyZXIgdG8gaXRzIGNvbnRhaW5lciwgb3IgYW5jZXN0b3JUb1N0b3BB
dCAod2hpY2hldmVyIGlzIGVuY291bnRlcmVkIGZpcnN0KS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDEyNDM2NikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDIwICsx
NjUsMjAgQEAgdm9pZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZh
bHNlKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5z
Zm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlw
T3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lm
aWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hv
dWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgogICAgIEFTU0VSVF9BUkcocmVwYWludENvbnRhaW5l
ciwgIXJlcGFpbnRDb250YWluZXIgfHwgcmVwYWludENvbnRhaW5lciA9PSB0aGlzKTsKLSAgICBB
U1NFUlRfVU5VU0VEKHdhc0ZpeGVkLCAhd2FzRml4ZWQgfHwgKndhc0ZpeGVkID09IGZpeGVkKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHdhc0ZpeGVkLCAhd2FzRml4ZWQgfHwgKndhc0ZpeGVkID09ICht
b2RlICYgSXNGaXhlZCkpOwogCi0gICAgaWYgKCFyZXBhaW50Q29udGFpbmVyICYmIHVzZVRyYW5z
Zm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcigwKSkgeworICAgIGlmICgh
cmVwYWludENvbnRhaW5lciAmJiBtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKDApKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7
CiAgICAgICAgIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIoMCwgTGF5b3V0U2l6ZSgpLCB0KTsK
ICAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCk7CiAgICAgfQogICAgIAot
ICAgIGlmIChmaXhlZCAmJiBtX2ZyYW1lVmlldykKKyAgICBpZiAobW9kZSAmIElzRml4ZWQgJiYg
bV9mcmFtZVZpZXcpCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUobV9mcmFtZVZpZXctPnNj
cm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNpb24gMTI0MzY2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1JlbmRlckNvdW50ZXJzKCkgeyByZXR1cm4gbV9yZW5kZXJD
b3VudGVyQ291bnQ7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVz
ZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJG
bGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5l
ckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5n
VG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3Rh
dGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb2x1bW5zKGludCBkZXNpcmVk
Q29sdW1uQ291bnQpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCShyZXZpc2lv
biAxMjQzNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICovLCBib29sIC8q
IHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlD
b250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdG
b3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2Fs
VG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdS
ZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIs
IHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAkocmV2aXNpb24g
MTI0MzY2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5z
Zm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAs
IGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZs
aXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNm
b3JtVXBkYXRlID0gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCShyZXZpc2lvbiAxMjQzNjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmU6OmNvbXB1dGVGbG9hdFJlY3RG
bwogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMs
IHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIGJvb2wgLyogZml4ZWQgKi8s
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3Qs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9D
b250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVk
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaAkocmV2aXNpb24gMTI0MzY2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBU
cmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWlu
ZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Y29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTI0MzY2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVj
dDo6Y29tcHV0ZUZsb2F0UgogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9
CiAKLXZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wg
LyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBs
eUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNW
R01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2Fs
VG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdS
ZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIs
IHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCShyZXZpc2lvbiAxMjQz
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYs
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBh
bmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDEyNDM2NikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NSwxMiArMzk1LDEyIEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZs
b2F0UmVjdEZvclIKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJveCBjb29yZGlu
YXRlcy4KIC8vIENhbGxlcnMgd2l0aCBsb2NhbCBTVkcgdmlld3BvcnQgY29vcmRpbmF0ZXMgc2hv
dWxkIGZpcnN0IGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtCiAvLyB0byBjb252
ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2FsIENTUyBib3ggY29vcmRp
bmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBP
ck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewotICAgIEFTU0VSVCghZml4ZWQpOyAvLyBXZSBzaG91
bGQgaGF2ZSBubyBmaXhlZCBjb250ZW50IGluIHRoZSBTVkcgcmVuZGVyaW5nIHRyZWUuCi0gICAg
QVNTRVJUKHVzZVRyYW5zZm9ybXMpOyAvLyBtYXBwaW5nIGEgcG9pbnQgdGhyb3VnaCBTVkcgdy9v
IHJlc3BlY3RpbmcgdHJhc25mb3JtcyBpcyB1c2VsZXNzLgorICAgIEFTU0VSVChtb2RlICYgIUlz
Rml4ZWQpOyAvLyBXZSBzaG91bGQgaGF2ZSBubyBmaXhlZCBjb250ZW50IGluIHRoZSBTVkcgcmVu
ZGVyaW5nIHRyZWUuCisgICAgQVNTRVJUKG1vZGUgJiBVc2VUcmFuc2Zvcm1zKTsgLy8gbWFwcGlu
ZyBhIHBvaW50IHRocm91Z2ggU1ZHIHcvbyByZXNwZWN0aW5nIHRyYXNuZm9ybXMgaXMgdXNlbGVz
cy4KIAotICAgIFJlbmRlclJlcGxhY2VkOjptYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250
YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWlu
ZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgUmVuZGVyUmVwbGFjZWQ6Om1hcExvY2FsVG9Db250YWlu
ZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUgfCBBcHBseUNvbnRhaW5l
ckZsaXAsIHdhc0ZpeGVkKTsKIH0KIAogY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdSb290
OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkocmV2aXNp
b24gMTI0MzY2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
RmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0
ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBib29s
KiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVy
T2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHJldmlzaW9uIDEyNDM2NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFJlbmRl
clNWR1RleHQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENvbnRhaW5lciwgcmVwYWludFJl
Y3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZpeGVkICov
LCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0
ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBS
ZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2Fs
VG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdS
ZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIs
IHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAkocmV2aXNpb24gMTI0MzY2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0
JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUZs
b2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IEZsb2F0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFw
cGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhl
ZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExv
Y2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNG
aXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNl
c3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCopIE9WRVJS
SURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMjQzNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW4KICAgICBpZiAocGFy
ZW50LT5pc1NWR1Jvb3QoKSkKICAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0o
dG9SZW5kZXJTVkdSb290KHBhcmVudCktPmxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKSk7CiAg
ICAgCi0gICAgcGFyZW50LT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZh
bHNlLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgUmVuZGVyT2JqZWN0OjpEb05vdEFwcGx5Q29udGFp
bmVyRmxpcCwgd2FzRml4ZWQpOworICAgIHBhcmVudC0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpOwog
fQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXAp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156161</attachid>
            <date>2012-08-02 14:06:15 -0700</date>
            <delta_ts>2012-08-03 10:27:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92927-20120802140556.patch</filename>
            <type>text/plain</type>
            <size>33889</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzMWYwZDRkZTk4ZDM2
OGUxNGExMzExZDM2NjljNjBjYTUzODFlMC4uN2RmNGE1OTlmMTYzYjUyMGI0MmEwZDk0ZDI1Y2M0
OGNlOTRiYjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA4LTAyICBMZXZp
IFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBTd2l0Y2ggbWFwTG9j
YWxUb0NvbnRhaW5lciB0byB1c2UgYSBmbGFnIGluc3RlYWQgb2YgYm9vbGVhbiBwYXJhbWV0ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkyNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5naW5n
IG1hcExvY2FsVG9Db250YWluZXIgdG8gdXNlIGEgdWludCBmbGFnIHRvIHNldCB0aGUgbW9kZSBv
ZiBvcGVyYXRpb24uIFRoaXMgcmVtb3ZlcworICAgICAgICBzaW1wbGlmaWVzIHRoZSBjb250cmFj
dCwgcmVtb3ZlcyBib29sZWFuIGFyZ3VtZW50cyBhbmQgcGF2ZXMgdGhlIHdheSBmb3IgYW4gYWRk
aXRpb25hbCBtb2RlCisgICAgICAgIGZvciBzdWItcGl4ZWwgbGF5b3V0IHN1cHBvcnQuIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkyMzggZm9yIHRoZQorICAg
ICAgICBzdWItcGl4ZWwgdXNlIGNhc2UuIE90aGVyIHRoYW4gdGhlIG5ldyBNYXBMb2NhbFRvQ29u
dGFpbmVyTW9kZSBlbnVtIGFuZCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MKKyAgICAgICAgdHlw
ZWRlZiwgdGhpcyBjaGFuZ2UgaXMgcHVyZWx5IG1lY2hhbmljYWwuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGFzIHRoaXMgZG9lc24ndCBjaGFuZ2UgY3VycmVudCBiZWhhdmlvci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFwTG9jYWxUb0Nv
bnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVu
ZGVyQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQWJzb2x1dGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgIChSZW5kZXJJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRv
QWJzb2x1dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5l
clF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVy
UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFJl
bmRlck9iamVjdCk6IEFkZGluZyB0aGUgTWFwTG9jYWxUb0NvbnRhaW5lck1vZGUgZW51bSBhbmQg
TWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIHVuc2lnbmVkCisgICAgICAgIGludCwgYW5kIHJlbW92
aW5nIHRoZSBvbGQgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgZW51bS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjptYXBM
b2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAg
ICAgICAoUmVuZGVyVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5oOgorICAgICAgICAoUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oOgorICAgICAgICAoUmVuZGVyU1ZHSW5saW5lKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAg
IChSZW5kZXJTVkdNb2RlbE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9D
b250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAg
ICAgICAoUmVuZGVyU1ZHUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250
YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorICAgICAg
ICAoUmVuZGVyU1ZHVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9D
b250YWluZXIpOgorCiAyMDEyLTA4LTAyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGQgYmFjayBBU1NFUlQoIW5lZWRzTGF5b3V0KSB0byBSZW5kZXJUYWJsZVNl
Y3Rpb24gd2hpY2ggaXMgbm93IHZhbGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCA1NmMyYjI0NmU0NjA2MzgyMjQ3NTc2MDczOWI0NzEwY2ZmMDdjZDExLi5k
MDYxYjg0OWZhNjcxZTk1Yzk4M2I5ZGM4YjI0N2YxNDlmMGYxYjRlIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTMyMDUsNyArMzIwNSw3IEBAIEdhcFJlY3Rz
IFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDCiAKICAgICAvLyBGSVhNRTogdGhpcyBpcyBicm9rZW4gd2l0aCB0cmFu
c2Zvcm1zCiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6
OkFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBGbG9hdFBvaW50KCkpOwotICAgIG1hcExvY2FsVG9D
b250YWluZXIocmVwYWludENvbnRhaW5lciwgZmFsc2UsIGZhbHNlLCB0cmFuc2Zvcm1TdGF0ZSk7
CisgICAgbWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSk7CiAgICAgTGF5b3V0UG9pbnQgb2Zmc2V0RnJvbVJlcGFpbnRDb250YWluZXIgPSByb3VuZGVk
TGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSk7CiAKICAgICBpZiAoaGFz
T3ZlcmZsb3dDbGlwKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4
IDliM2I3ZGU4NjE3NjQzYzIwM2ZiNGY3NTI3OWFkOTdlNzI5NTU3YTYuLjU3NDQ5OWY2YjU0YWU1
ZDZhMmFmMTBhNWVhODQ2MjQ1Y2Y2OTg1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCkBAIC0xMjUyLDcgKzEyNTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVy
cGVuZGljdWxhckNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVy
biBjYi0+Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgu
dmFsdWUoKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRy
YW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJG
bGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJCb3g6Om1hcExvY2Fs
VG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRo
aXMpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNzgsMTcgKzEyNzgsMTcgQEAgdm9pZCBSZW5kZXJC
b3g6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGJvb2wKICAgICAvLyBJZiB0aGlzIGJveCBoYXMgYSB0cmFuc2Zvcm0sIGl0IGFjdHMg
YXMgYSBmaXhlZCBwb3NpdGlvbiBjb250YWluZXIgZm9yIGZpeGVkIGRlc2NlbmRhbnRzLAogICAg
IC8vIGFuZCBtYXkgaXRzZWxmIGFsc28gYmUgZml4ZWQgcG9zaXRpb24uIFNvIHByb3BhZ2F0ZSAn
Zml4ZWQnIHVwIG9ubHkgaWYgdGhpcyBib3ggaXMgZml4ZWQgcG9zaXRpb24uCiAgICAgaWYgKGhh
c1RyYW5zZm9ybSAmJiAhaXNGaXhlZFBvcykKLSAgICAgICAgZml4ZWQgPSBmYWxzZTsKKyAgICAg
ICAgbW9kZSAmPSB+SXNGaXhlZDsKICAgICBlbHNlIGlmIChpc0ZpeGVkUG9zKQotICAgICAgICBm
aXhlZCA9IHRydWU7CisgICAgICAgIG1vZGUgfD0gSXNGaXhlZDsKIAogICAgIGlmICh3YXNGaXhl
ZCkKLSAgICAgICAgKndhc0ZpeGVkID0gZml4ZWQ7CisgICAgICAgICp3YXNGaXhlZCA9IG1vZGUg
JiBJc0ZpeGVkOwogICAgIAogICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0
RnJvbUNvbnRhaW5lcihvLCByb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVk
UG9pbnQoKSkpOwogICAgIAotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYg
KG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7Ci0g
ICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihv
KSkgeworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChvLT5z
dHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOworICAgIGlm
IChtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KG8pKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgICAgIGdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVyT2Zmc2V0LCB0KTsKICAgICAgICAgdHJhbnNm
b3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwpA
QCAtMTMwMywxNSArMTMwMywxNiBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgbW9kZSAmPSB+QXBwbHlDb250YWluZXJGbGlwOwogICAgIGlm
IChvLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgewogICAgICAgICAvLyBUcmFuc2Zvcm0gZnJvbSBy
ZW5kZXIgZmxvdyBjb29yZGluYXRlcyBpbnRvIHJlZ2lvbiBjb29yZGluYXRlcy4KICAgICAgICAg
UmVuZGVyUmVnaW9uKiByZWdpb24gPSB0b1JlbmRlckZsb3dUaHJlYWQobyktPm1hcEZyb21GbG93
VG9SZWdpb24odHJhbnNmb3JtU3RhdGUpOwogICAgICAgICBpZiAocmVnaW9uKQotICAgICAgICAg
ICAgcmVnaW9uLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlZ2lvbi0+Y29udGFpbmVyRm9yUmVwYWlu
dCgpLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIERvTm90QXBwbHlDb250
YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgICAgICAgICByZWdpb24tPm1hcExvY2FsVG9Db250
YWluZXIocmVnaW9uLT5jb250YWluZXJGb3JSZXBhaW50KCksIHRyYW5zZm9ybVN0YXRlLCBtb2Rl
LCB3YXNGaXhlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvLT5tYXBMb2NhbFRv
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zv
cm1TdGF0ZSwgRG9Ob3RBcHBseUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKKyAgICBvLT5tYXBM
b2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3
YXNGaXhlZCk7CiB9CiAKIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyQm94OjpwdXNoTWFwcGlu
Z1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0
LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKaW5kZXggYmJiMDM0NDUxMjZkODY2NDEyN2Q3YWEyNGM4ZTMxMTZjZjBi
MGU2OS4uYzZkMjU5Njc0ZTg3ODVjYTc2NTEyZGNiMjI1MTVhMjI1NzY0MjU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTE4LDcgKzUxOCw3IEBAIHByb3RlY3RlZDoK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29u
c3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgp
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1z
LCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWlu
ZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250
YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zv
cm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCAwYTZjOWUwNGZhNzIxYzUyOTQ5ZDkxYWMx
NjQ3OWI3YWZlMjQ1OGNiLi5lZGY1OTc4N2M1Yzk4ZWE4ZjlmZWY0MjUxYTk3MWViNTQyN2Y4MzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAK
QEAgLTkyLDggKzkyLDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9BYnNvbHV0ZShU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIG1h
cHBpbmcgaW5jbHVkZXMgc29tZXRoaW5nIGxpa2UgY29sdW1ucywgd2UgaGF2ZSB0byBnbyB2aWEg
cmVuZGVyZXJzLgogICAgIGlmIChoYXNOb25Vbmlmb3JtU3RlcCgpKSB7Ci0gICAgICAgIGJvb2wg
Zml4ZWQgPSBmYWxzZTsKLSAgICAgICAgbV9tYXBwaW5nLmxhc3QoKS5tX3JlbmRlcmVyLT5tYXBM
b2NhbFRvQ29udGFpbmVyKDAsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgUmVuZGVyT2Jq
ZWN0OjpBcHBseUNvbnRhaW5lckZsaXApOworICAgICAgICBtX21hcHBpbmcubGFzdCgpLm1fcmVu
ZGVyZXItPm1hcExvY2FsVG9Db250YWluZXIoMCwgdHJhbnNmb3JtU3RhdGUsIFVzZVRyYW5zZm9y
bXMgfCBBcHBseUNvbnRhaW5lckZsaXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA1OWI2YTRhMGE1
Yjk5NDU5MTNiNTU3NjQyODc0YTM1Y2QyNjIzN2U5Li5kYTEyMGJlZDE3MTRhMDg2MGQzMmNlNzNj
YzU3NWQ3YzcwNDI0Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcApAQCAtMTExNCw3ICsxMTE0LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNl
dEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW8KICAgICBy
ZXR1cm4gb2Zmc2V0OwogfQogCi12b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29u
dGFpbmVyRmxpcE9yTm90IGFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
Cit2b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBN
YXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAg
ICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTEz
NSwxOCArMTEzNSwxOCBAQCB2b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcihS
ZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYgogICAgIGlmICghbykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFwcGx5Q29udGFpbmVyRmxpcCAmJiBvLT5pc0JveCgp
KSB7CisgICAgaWYgKG1vZGUgJiBBcHBseUNvbnRhaW5lckZsaXAgJiYgby0+aXNCb3goKSkgewog
ICAgICAgICBpZiAoby0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgewog
ICAgICAgICAgICAgSW50UG9pbnQgY2VudGVyUG9pbnQgPSByb3VuZGVkSW50UG9pbnQodHJhbnNm
b3JtU3RhdGUubWFwcGVkUG9pbnQoKSk7CiAgICAgICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3Zl
KHRvUmVuZGVyQm94KG8pLT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKGNlbnRl
clBvaW50KSAtIGNlbnRlclBvaW50KTsKICAgICAgICAgfQotICAgICAgICBhcHBseUNvbnRhaW5l
ckZsaXAgPSBEb05vdEFwcGx5Q29udGFpbmVyRmxpcDsKKyAgICAgICAgbW9kZSAmPSB+QXBwbHlD
b250YWluZXJGbGlwOwogICAgIH0KIAogICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0g
b2Zmc2V0RnJvbUNvbnRhaW5lcihvLCByb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUu
bWFwcGVkUG9pbnQoKSkpOwogCi0gICAgYm9vbCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAm
JiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsK
LSAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KG8pKSB7CisgICAgYm9vbCBwcmVzZXJ2ZTNEID0gbW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgKG8t
PnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7CisgICAg
aWYgKG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWlu
ZXIobykpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAgICAgICAgZ2V0VHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihvLCBjb250YWluZXJPZmZzZXQsIHQpOwogICAgICAgICB0cmFu
c2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6
OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7
CkBAIC0xMTYxLDcgKzExNjEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIGFwcGx5Q29udGFpbmVy
RmxpcCwgd2FzRml4ZWQpOworICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRh
aW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KIAogY29uc3QgUmVuZGVy
T2JqZWN0KiBSZW5kZXJJbmxpbmU6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRl
eCA4YjQ1YTVjY2E0NWRhNjdkNTg0NGE3YWY4MzQyYzM3N2MxM2E3ZWRhLi5lMjA3Y2FmNTg2ZjA5
MjEzZWZiMzQ5ZjkxMmRjOTA3NDkxNWYyY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRl
JiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJv
b2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5k
ZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGFhN2I2
YmZmNWU0ZGNlZGU2NDZmNmNmMTA0MzJhMjNjNTI5NWM3OGQuLmE0NDRlMTE0ZjhhMWM3OTBkNzgw
MjhkY2ZiOGFmY2U4MWZlYTU3NmQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCkBAIC0xOTg3LDcgKzE5ODcsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6
OnZpZXdSZWN0KCkgY29uc3QKIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1
dGUoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFu
c2Zvcm1zKSBjb25zdAogewogICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5z
Zm9ybVN0YXRlOjpBcHBseVRyYW5zZm9ybURpcmVjdGlvbiwgbG9jYWxQb2ludCk7Ci0gICAgbWFw
TG9jYWxUb0NvbnRhaW5lcigwLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUp
OworICAgIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlw
OworICAgIGlmIChmaXhlZCkKKyAgICAgICAgbW9kZSB8PSBJc0ZpeGVkOworICAgIGlmICh1c2VU
cmFuc2Zvcm1zKQorICAgICAgICBtb2RlIHw9IFVzZVRyYW5zZm9ybXM7CisgICAgbWFwTG9jYWxU
b0NvbnRhaW5lcigwLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSk7CiAgICAgdHJhbnNmb3JtU3RhdGUu
ZmxhdHRlbigpOwogICAgIAogICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9p
bnQoKTsKQEAgLTIwMDIsNyArMjAwNyw3IEBAIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0OjphYnNv
bHV0ZVRvTG9jYWwoY29uc3QgRmxvYXRQb2ludCYgY29udGFpbmVyUG9pbnQsIGJvb2wKICAgICBy
ZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVy
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRl
JiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgYXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlz
KQogICAgICAgICByZXR1cm47CkBAIC0yMDEzLDEwICsyMDE4LDEwIEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBiCiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgY2FsbCBvZmZzZXRGcm9tQ29u
dGFpbmVyIHRvIHNoYXJlIGNvZGUsIGJ1dCBJJ20gbm90IHN1cmUgaXQncyBldmVyIGNhbGxlZC4K
ICAgICBMYXlvdXRQb2ludCBjZW50ZXJQb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludCh0cmFuc2Zv
cm1TdGF0ZS5tYXBwZWRQb2ludCgpKTsKLSAgICBpZiAoYXBwbHlDb250YWluZXJGbGlwICYmIG8t
PmlzQm94KCkpIHsKKyAgICBpZiAobW9kZSAmIEFwcGx5Q29udGFpbmVyRmxpcCAmJiBvLT5pc0Jv
eCgpKSB7CiAgICAgICAgIGlmIChvLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSgpKQogICAgICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSh0b1JlbmRlckJveChvKS0+Zmxp
cEZvcldyaXRpbmdNb2RlSW5jbHVkaW5nQ29sdW1ucyhyb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNm
b3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpIC0gY2VudGVyUG9pbnQpOwotICAgICAgICBhcHBseUNv
bnRhaW5lckZsaXAgPSBEb05vdEFwcGx5Q29udGFpbmVyRmxpcDsKKyAgICAgICAgbW9kZSAmPSB+
QXBwbHlDb250YWluZXJGbGlwOwogICAgIH0KIAogICAgIExheW91dFNpemUgY29sdW1uT2Zmc2V0
OwpAQCAtMjAyNyw3ICsyMDMyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1hcExvY2FsVG9Db250
YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGIKICAgICBpZiAo
by0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoLXRvUmVu
ZGVyQm94KG8pLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7CiAKLSAgICBvLT5tYXBMb2NhbFRv
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zv
cm1TdGF0ZSwgYXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgby0+bWFwTG9jYWxU
b0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4
ZWQpOwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdApAQCAtMjEwMSw3ICsyMTA2LDEw
IEBAIEZsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZs
b2F0UXVhZCYgbG9jYWxRdWFkLCBSZW5kZXJCCiAgICAgLy8gVHJhY2sgdGhlIHBvaW50IGF0IHRo
ZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFzIG1hcExvY2FsVG9Db250YWlu
ZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCiAgICAgLy8gaXQgd2lsbCB1c2UgdGhh
dCBwb2ludCBhcyB0aGUgcmVmZXJlbmNlIHBvaW50IHRvIGRlY2lkZSB3aGljaCBjb2x1bW4ncyB0
cmFuc2Zvcm0gdG8gYXBwbHkgaW4gbXVsdGlwbGUtY29sdW1uIGJsb2Nrcy4KICAgICBUcmFuc2Zv
cm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJl
Y3Rpb24sIGxvY2FsUXVhZC5ib3VuZGluZ0JveCgpLmNlbnRlcigpLCBsb2NhbFF1YWQpOwotICAg
IG1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4ZWQsIHRydWUsIHRyYW5z
Zm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKKyAgICBNYXBMb2NhbFRv
Q29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCB8IFVzZVRyYW5zZm9ybXM7
CisgICAgaWYgKGZpeGVkKQorICAgICAgICBtb2RlIHw9IElzRml4ZWQ7CisgICAgbWFwTG9jYWxU
b0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4
ZWQpOwogICAgIHRyYW5zZm9ybVN0YXRlLmZsYXR0ZW4oKTsKICAgICAKICAgICByZXR1cm4gdHJh
bnNmb3JtU3RhdGUubGFzdFBsYW5hclF1YWQoKTsKQEAgLTIxMTAsNyArMjExOCwxMCBAQCBGbG9h
dFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQm
IGxvY2FsUXVhZCwgUmVuZGVyQgogRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250
YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiBsb2NhbFBvaW50LCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CiB7CiAgICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6OkFw
cGx5VHJhbnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKLSAgICBtYXBMb2NhbFRvQ29udGFp
bmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlD
b250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1v
ZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBVc2VUcmFuc2Zvcm1zOworICAgIGlmIChmaXhlZCkK
KyAgICAgICAgbW9kZSB8PSBJc0ZpeGVkOworICAgIG1hcExvY2FsVG9Db250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKICAgICB0cmFuc2Zv
cm1TdGF0ZS5mbGF0dGVuKCk7CiAKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5h
clBvaW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZTMw
MzYyNTRiYmJmMzJiNjE2YWU2YmFlZGUzZDdjYzcyYTEzNTZjZS4uZWExNGZlMDkwNjBjMTExZGEz
ZDE5ZDAzYzBiMDk0NDE3NGNmYzA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaApAQCAtMTA3LDYgKzEwNywxMyBAQCBlbnVtIFBsYWNlR2VuZXJhdGVkUnVuSW5GbGFn
IHsKICAgICBEb05vdFBsYWNlR2VuZXJhdGVkUnVuSW4KIH07CiAKK2VudW0gTWFwTG9jYWxUb0Nv
bnRhaW5lck1vZGUgeworICAgIElzRml4ZWQgPSAxIDw8IDAsCisgICAgVXNlVHJhbnNmb3JtcyA9
IDEgPDwgMSwKKyAgICBBcHBseUNvbnRhaW5lckZsaXAgPSAxIDw8IDIKK307Cit0eXBlZGVmIHVu
c2lnbmVkIE1hcExvY2FsVG9Db250YWluZXJGbGFnczsKKwogY29uc3QgaW50IGNhcmV0V2lkdGgg
PSAxOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoV0lER0VUX1JF
R0lPTikKQEAgLTg3OCw4ICs4ODUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXAgcG9pbnRzIGFu
ZCBxdWFkcyB0aHJvdWdoIGVsZW1lbnRzLCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNmb3Jtcy4g
WW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQogICAgIC8v
IGxvY2FsVG9BYnNvbHV0ZS9hYnNvbHV0ZVRvTG9jYWwgbWV0aG9kcyBpbnN0ZWFkLgotICAgIGVu
dW0gQXBwbHlDb250YWluZXJGbGlwT3JOb3QgeyBEb05vdEFwcGx5Q29udGFpbmVyRmxpcCwgQXBw
bHlDb250YWluZXJGbGlwIH07Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgYm9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9k
ZSA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VU
cmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogCiAgICAgLy8gUHVzaGVzIHN0YXRl
IG9udG8gUmVuZGVyR2VvbWV0cnlNYXAgYWJvdXQgaG93IHRvIG1hcCBjb29yZGluYXRlcyBmcm9t
IHRoaXMgcmVuZGVyZXIgdG8gaXRzIGNvbnRhaW5lciwgb3IgYW5jZXN0b3JUb1N0b3BBdCAod2hp
Y2hldmVyIGlzIGVuY291bnRlcmVkIGZpcnN0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAppbmRleCA4YmQ0OWNjZmFlMWFkZGM5ZjZjZTY1YTJjOWJmZDkyOTU3Mzc1MTlm
Li43ZGQxMjNhN2I5YjhiODgxNWU3MDU5ZGYwYmZlYWEwYjhmNDEwZWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xNjUsMjAgKzE2NSwyMCBAQCB2b2lkIFJl
bmRlclZpZXc6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi12b2lk
IFJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3JtcywgVHJhbnNmb3Jt
U3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogewogICAgIC8vIElmIGEgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90
IDAgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBp
dCBieSBub3cuCiAgICAgQVNTRVJUX0FSRyhyZXBhaW50Q29udGFpbmVyLCAhcmVwYWludENvbnRh
aW5lciB8fCByZXBhaW50Q29udGFpbmVyID09IHRoaXMpOwotICAgIEFTU0VSVF9VTlVTRUQod2Fz
Rml4ZWQsICF3YXNGaXhlZCB8fCAqd2FzRml4ZWQgPT0gZml4ZWQpOworICAgIEFTU0VSVF9VTlVT
RUQod2FzRml4ZWQsICF3YXNGaXhlZCB8fCAqd2FzRml4ZWQgPT0gKG1vZGUgJiBJc0ZpeGVkKSk7
CiAKLSAgICBpZiAoIXJlcGFpbnRDb250YWluZXIgJiYgdXNlVHJhbnNmb3JtcyAmJiBzaG91bGRV
c2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKDApKSB7CisgICAgaWYgKCFyZXBhaW50Q29udGFpbmVy
ICYmIG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWlu
ZXIoMCkpIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdDsKICAgICAgICAgZ2V0VHJh
bnNmb3JtRnJvbUNvbnRhaW5lcigwLCBMYXlvdXRTaXplKCksIHQpOwogICAgICAgICB0cmFuc2Zv
cm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0KTsKICAgICB9CiAgICAgCi0gICAgaWYgKGZpeGVkICYm
IG1fZnJhbWVWaWV3KQorICAgIGlmIChtb2RlICYgSXNGaXhlZCAmJiBtX2ZyYW1lVmlldykKICAg
ICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZShtX2ZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4
ZWRQb3NpdGlvbigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5k
ZXggMDRhODA2ZTliY2E1OTFlMTVhNjU3YTEyODFhMmUwMWJkZWRmYmQwOC4uOThiZTU1M2Y2YmE2
M2NjZDFiZWQ1ZjI2NGYyMzEzNTMxZjliOTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVuZGVy
Q291bnRlcnMoKSB7IHJldHVybiBtX3JlbmRlckNvdW50ZXJDb3VudDsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJh
bnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxp
cCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNm
b3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVy
RmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9v
bCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCByZXF1aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3QgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcAppbmRleCBkNjYwNTY2MTUwNzlhZWNmNzY3Y2NjYjk3NDllMTVjNjFhODVi
ZmNmLi5kMzA5ZDdlNzZmNzA2NGFkMjgzNTI1YTk3Yjg5MTNlY2IzNDk1NzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHAKQEAgLTE5MCw4ICsxOTAsOSBAQCBib29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyog
Zml4ZWQgKi8sIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0
Cit2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdAogeworICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRl
LCB3YXNGaXhlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKaW5kZXggODBkZGZkNjMwOGRkOGY2MzlhMTQ1ZDJk
MDUzM2YwMjRiNmYyYmNjYy4uN2RhMzZlYWM2ZjhjNzM1NjI2NDNkNWMyZjU4MjNhNWVhMWQyYTYy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdG
b3JlaWduT2JqZWN0LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzU1ZHRm9yZWlnbk9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0YXRl
JiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwg
TWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wq
IHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRl
ID0gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKaW5kZXggMDU3YmZkYTAwN2UyYzY4NDM0OWUzYzczZmViODZiMDFjZjM1ZDMw
YS4uNWRkZjU4MTAyZGZlYzkwZjI4NjIwYjI4ZTljZTFiMTY2MmY3NGUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNzksOCAr
NzksOSBAQCB2b2lkIFJlbmRlclNWR0lubGluZTo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDbwogICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRS
ZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW5saW5lOjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIHVzZVRy
YW5zZm9ybXMgKi8sIGJvb2wgLyogZml4ZWQgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9p
ZCBSZW5kZXJTVkdJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFw
TG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogeworICAg
IFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5o
CmluZGV4IDUzM2E5OWFhNmIwMTc3ZTg3YmE4YzcwNGZhMTExYjExYjczNmM0MjguLjNkYzdkZGE4
MDY5M2FiZjJhZDZkYWMyODA1ZmY2NDM2NzU2Y2VmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFu
c2Zvcm1TdGF0ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJG
bGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29u
c3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDE4ZTdlY2FjZTdhM2EzYzY4ZDhmNWY0
MDQ4OGYyZjZkOTJiNTRlMTUuLjFmYmEzYWZmMjk1NGU4ODJhMTNjMmNmNzBjNWY5ZjcyMTBjZDZk
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuY3BwCkBAIC01NSw4ICs1NSw5IEBAIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmpl
Y3Q6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1z
ICovLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9y
Tm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdz
IG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTShtb2RlKTsK
ICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRD
b250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAppbmRleCAwZDgx
OTI2MDkzZjZiZjc0ZWRjMDhjNDhjMjg3OTc3NGE0NGIyZDYwLi5iNGMzZjY4YWFhNzcwOWUwNGFm
N2ZlYzVkYjlhMTAxYjQ3YWMxOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJh
bnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxp
cCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNm
b3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVy
RmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggNzA3ZGE4ODZl
MmNhOThhMWI2OTZlZWM0YjI2MDI4ZjY2NjZmZmQ1ZS4uYjVjNGEyNmY2YTM3ZmExMmU3NWYzNjdk
MWUwZWM3YTViOGY4NTk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCkBAIC0zOTUsMTIgKzM5NSwxMiBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50
Q29udAogLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgog
Ly8gQ2FsbGVycyB3aXRoIGxvY2FsIFNWRyB2aWV3cG9ydCBjb29yZGluYXRlcyBzaG91bGQgZmly
c3QgYXBwbHkgdGhlIGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0KIC8vIHRvIGNvbnZlcnQgZnJv
bSBTVkcgdmlld3BvcnQgY29vcmRpbmF0ZXMgdG8gbG9jYWwgQ1NTIGJveCBjb29yZGluYXRlcy4K
LXZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFmaXhlZCk7IC8vIFdlIHNob3VsZCBoYXZl
IG5vIGZpeGVkIGNvbnRlbnQgaW4gdGhlIFNWRyByZW5kZXJpbmcgdHJlZS4KLSAgICBBU1NFUlQo
dXNlVHJhbnNmb3Jtcyk7IC8vIG1hcHBpbmcgYSBwb2ludCB0aHJvdWdoIFNWRyB3L28gcmVzcGVj
dGluZyB0cmFzbmZvcm1zIGlzIHVzZWxlc3MuCisgICAgQVNTRVJUKG1vZGUgJiAhSXNGaXhlZCk7
IC8vIFdlIHNob3VsZCBoYXZlIG5vIGZpeGVkIGNvbnRlbnQgaW4gdGhlIFNWRyByZW5kZXJpbmcg
dHJlZS4KKyAgICBBU1NFUlQobW9kZSAmIFVzZVRyYW5zZm9ybXMpOyAvLyBtYXBwaW5nIGEgcG9p
bnQgdGhyb3VnaCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJhc25mb3JtcyBpcyB1c2VsZXNzLgogCi0g
ICAgUmVuZGVyUmVwbGFjZWQ6Om1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwg
Zml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXAs
IHdhc0ZpeGVkKTsKKyAgICBSZW5kZXJSZXBsYWNlZDo6bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBh
aW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCwg
d2FzRml4ZWQpOwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1Jvb3Q6OnB1c2hN
YXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggOWFhN2U3YzE4NmFlNDg3
NjkwYzQwYWFjOTA1ZmY1Y2MwZDAyMzc0NC4uM2UyZjNjNzBkNzNhYmRjNDM3MDE3NmI1MjA4YWMy
NDk0MzVlMjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIExheW91dFJlY3Qg
Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiByZXBhaW50UmVjdCwgYm9vbCBmaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFw
TG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0ZSYsIEFwcGx5Q29u
dGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDAp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcExvY2FsVG9D
b250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGNh
bkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBkMzBiYTFjZDYxNTc3
NWZkNTMwZjdiZmMxM2E2ZTZmZmIyNDE5NzUxLi41NTIxMDhkOGI1ZDIwZjQxYjkxZDIyYzE2Zjgy
ZGYzZDVkN2Y2ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAKQEAgLTExMSw4ICsxMTEsOSBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udAog
ICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KHRoaXMsIHJl
cGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZH
VGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29s
KiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5l
cihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
IHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9vbCogd2Fz
Rml4ZWQpIGNvbnN0CiB7CisgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgIFNWR1JlbmRlclN1
cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIodGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNm
b3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaAppbmRleCA5M2NiNjRmOGZiMmU3NGVlYjI4NmFlYmI0NjJkNzlmMmYx
YmNkNmRkLi5lZTJkYmRhMjNiNzQxZTE3MzIwYzFjZGRjOTFhYzk3ZTU3NTBlZTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNzUsNyArNzUs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZp
eGVkID0gZmFsc2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgRmxvYXRSZWN0
JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWlu
ZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRh
aW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9w
QXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KikgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRl
eCAwYmZiMGE1Mjc5Yzg4ODQ5NDY1ZWRmMmY5NTFiZjhhZTAzNDRkYWMxLi40YmQxYTIzOTE5OThk
YTEyMDExOTlhMTgyZmQ0ZjM3YmVkZjAxMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBT
VkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJCb3gKICAgICBpZiAocGFyZW50LT5pc1NWR1Jvb3QoKSkKICAgICAgICAg
dHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odG9SZW5kZXJTVkdSb290KHBhcmVudCktPmxv
Y2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKSk7CiAgICAgCi0gICAgcGFyZW50LT5tYXBMb2NhbFRv
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZhbHNlLCB0cnVlLCB0cmFuc2Zvcm1TdGF0ZSwg
UmVuZGVyT2JqZWN0OjpEb05vdEFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQpOworICAgIHBh
cmVudC0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpOwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFNW
R1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156410</attachid>
            <date>2012-08-03 10:27:08 -0700</date>
            <delta_ts>2012-08-03 15:23:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-92927-20120803102650.patch</filename>
            <type>text/plain</type>
            <size>33759</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMzMWYwZDRkZTk4ZDM2
OGUxNGExMzExZDM2NjljNjBjYTUzODFlMC4uNWY5NmE5NmM5YTA5YWUyYmE4YTU4OGFlMTUxYzBk
MmM1ZDUxMTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA4LTAyICBMZXZp
IFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBTd2l0Y2ggbWFwTG9j
YWxUb0NvbnRhaW5lciB0byB1c2UgYSBmbGFnIGluc3RlYWQgb2YgYm9vbGVhbiBwYXJhbWV0ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkyNwor
CisgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KKworICAgICAgICBDaGFuZ2luZyBt
YXBMb2NhbFRvQ29udGFpbmVyIHRvIHVzZSBhIHVpbnQgZmxhZyB0byBzZXQgdGhlIG1vZGUgb2Yg
b3BlcmF0aW9uLiBUaGlzIHJlbW92ZXMKKyAgICAgICAgc2ltcGxpZmllcyB0aGUgY29udHJhY3Qs
IHJlbW92ZXMgYm9vbGVhbiBhcmd1bWVudHMgYW5kIHBhdmVzIHRoZSB3YXkgZm9yIGFuIGFkZGl0
aW9uYWwgbW9kZQorICAgICAgICBmb3Igc3ViLXBpeGVsIGxheW91dCBzdXBwb3J0LiBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjM4IGZvciB0aGUKKyAgICAg
ICAgc3ViLXBpeGVsIHVzZSBjYXNlLiBPdGhlciB0aGFuIHRoZSBuZXcgTWFwTG9jYWxUb0NvbnRh
aW5lck1vZGUgZW51bSBhbmQgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzCisgICAgICAgIHR5cGVk
ZWYsIHRoaXMgY2hhbmdlIGlzIHB1cmVseSBtZWNoYW5pY2FsLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBhcyB0aGlzIGRvZXNuJ3QgY2hhbmdlIGN1cnJlbnQgYmVoYXZpb3IuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnNlbGVjdGlvbkdhcFJlY3RzRm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250
YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFJlbmRl
ckJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Fic29sdXRlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5oOgorICAgICAgICAoUmVuZGVySW5saW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0Fi
c29sdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXJR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclBv
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChSZW5k
ZXJPYmplY3QpOiBBZGRpbmcgdGhlIE1hcExvY2FsVG9Db250YWluZXJNb2RlIGVudW0gYW5kIE1h
cExvY2FsVG9Db250YWluZXJGbGFncyB1bnNpZ25lZAorICAgICAgICBpbnQsIGFuZCByZW1vdmlu
ZyB0aGUgb2xkIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90IGVudW0uCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bWFwTG9j
YWxUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAg
ICAgKFJlbmRlclZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaDoKKyAgICAgICAgKFJlbmRlclNWR0ZvcmVpZ25PYmplY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKFJlbmRlclNWR0lubGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAo
UmVuZGVyU1ZHTW9kZWxPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjptYXBMb2NhbFRvQ29u
dGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAg
ICAgKFJlbmRlclNWR1Jvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjptYXBMb2NhbFRvQ29udGFp
bmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAg
KFJlbmRlclNWR1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKToKKwogMjAxMi0wOC0wMiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQWRkIGJhY2sgQVNTRVJUKCFuZWVkc0xheW91dCkgdG8gUmVuZGVyVGFibGVTZWN0
aW9uIHdoaWNoIGlzIG5vdyB2YWxpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggNTZjMmIyNDZlNDYwNjM4MjI0NzU3NjA3MzliNDcxMGNmZjA3Y2QxMS4uZDA2
MWI4NDlmYTY3MWU5NWM5ODNiOWRjOGIyNDdmMTQ5ZjBmMWI0ZSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMjA1LDcgKzMyMDUsNyBAQCBHYXBSZWN0cyBS
ZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50QwogCiAgICAgLy8gRklYTUU6IHRoaXMgaXMgYnJva2VuIHdpdGggdHJhbnNm
b3JtcwogICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlOjpB
cHBseVRyYW5zZm9ybURpcmVjdGlvbiwgRmxvYXRQb2ludCgpKTsKLSAgICBtYXBMb2NhbFRvQ29u
dGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZhbHNlLCBmYWxzZSwgdHJhbnNmb3JtU3RhdGUpOwor
ICAgIG1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUp
OwogICAgIExheW91dFBvaW50IG9mZnNldEZyb21SZXBhaW50Q29udGFpbmVyID0gcm91bmRlZExh
eW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpOwogCiAgICAgaWYgKGhhc092
ZXJmbG93Q2xpcCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA5
YjNiN2RlODYxNzY0M2MyMDNmYjRmNzUyNzlhZDk3ZTcyOTU1N2E2Li41NzQ0OTlmNmI1NGFlNWQ2
YTJhZjEwYTVlYTg0NjI0NWNmNjk4NWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtMTI1Miw3ICsxMjUyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OnBlcnBl
bmRpY3VsYXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4g
Y2ItPmNvbXB1dGVDb250ZW50Qm94TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0TGVuZ3RoLnZh
bHVlKCkpOwogfQogCi12b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFu
c2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxp
cE9yTm90LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRv
Q29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBi
b29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSB0aGlz
KQogICAgICAgICByZXR1cm47CkBAIC0xMjc4LDE3ICsxMjc4LDE3IEBAIHZvaWQgUmVuZGVyQm94
OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sCiAgICAgLy8gSWYgdGhpcyBib3ggaGFzIGEgdHJhbnNmb3JtLCBpdCBhY3RzIGFz
IGEgZml4ZWQgcG9zaXRpb24gY29udGFpbmVyIGZvciBmaXhlZCBkZXNjZW5kYW50cywKICAgICAv
LyBhbmQgbWF5IGl0c2VsZiBhbHNvIGJlIGZpeGVkIHBvc2l0aW9uLiBTbyBwcm9wYWdhdGUgJ2Zp
eGVkJyB1cCBvbmx5IGlmIHRoaXMgYm94IGlzIGZpeGVkIHBvc2l0aW9uLgogICAgIGlmIChoYXNU
cmFuc2Zvcm0gJiYgIWlzRml4ZWRQb3MpCi0gICAgICAgIGZpeGVkID0gZmFsc2U7CisgICAgICAg
IG1vZGUgJj0gfklzRml4ZWQ7CiAgICAgZWxzZSBpZiAoaXNGaXhlZFBvcykKLSAgICAgICAgZml4
ZWQgPSB0cnVlOworICAgICAgICBtb2RlIHw9IElzRml4ZWQ7CiAKICAgICBpZiAod2FzRml4ZWQp
Ci0gICAgICAgICp3YXNGaXhlZCA9IGZpeGVkOworICAgICAgICAqd2FzRml4ZWQgPSBtb2RlICYg
SXNGaXhlZDsKICAgICAKICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZy
b21Db250YWluZXIobywgcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBv
aW50KCkpKTsKICAgICAKLSAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChv
LT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwotICAg
IGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykp
IHsKKyAgICBib29sIHByZXNlcnZlM0QgPSBtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5
bGUoKS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKKyAgICBpZiAo
bW9kZSAmIFVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihv
KSkgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwogICAgICAgICBnZXRUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKG8sIGNvbnRhaW5lck9mZnNldCwgdCk7CiAgICAgICAgIHRyYW5zZm9y
bVN0YXRlLmFwcGx5VHJhbnNmb3JtKHQsIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNj
dW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKQEAg
LTEzMDMsMTUgKzEzMDMsMTYgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIG1vZGUgJj0gfkFwcGx5Q29udGFpbmVyRmxpcDsKICAgICBpZiAo
by0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKICAgICAgICAgLy8gVHJhbnNmb3JtIGZyb20gcmVu
ZGVyIGZsb3cgY29vcmRpbmF0ZXMgaW50byByZWdpb24gY29vcmRpbmF0ZXMuCiAgICAgICAgIFJl
bmRlclJlZ2lvbiogcmVnaW9uID0gdG9SZW5kZXJGbG93VGhyZWFkKG8pLT5tYXBGcm9tRmxvd1Rv
UmVnaW9uKHRyYW5zZm9ybVN0YXRlKTsKICAgICAgICAgaWYgKHJlZ2lvbikKLSAgICAgICAgICAg
IHJlZ2lvbi0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZWdpb24tPmNvbnRhaW5lckZvclJlcGFpbnQo
KSwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBEb05vdEFwcGx5Q29udGFp
bmVyRmxpcCwgd2FzRml4ZWQpOworICAgICAgICAgICAgcmVnaW9uLT5tYXBMb2NhbFRvQ29udGFp
bmVyKHJlZ2lvbi0+Y29udGFpbmVyRm9yUmVwYWludCgpLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwg
d2FzRml4ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgby0+bWFwTG9jYWxUb0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3Jt
U3RhdGUsIERvTm90QXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgby0+bWFwTG9j
YWxUb0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2Fz
Rml4ZWQpOwogfQogCiBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlckJveDo6cHVzaE1hcHBpbmdU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwg
UmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCmluZGV4IGJiYjAzNDQ1MTI2ZDg2NjQxMjdkN2FhMjRjOGUzMTE2Y2YwYjBl
NjkuLmM2ZDI1OTY3NGU4Nzg1Y2E3NjUxMmRjYjIyNTE1YTIyNTc2NDI1NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTUxOCw3ICs1MTgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgCiAgICAgdmlydHVhbCBib29sIHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNvbnN0
IHsgcmV0dXJuIGlzUmVwbGFjZWQoKSAmJiAhaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
VHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVy
RmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9j
YWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJh
bnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFp
bmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCosIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNmb3Jt
cywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggMGE2YzllMDRmYTcyMWM1Mjk0OWQ5MWFjMTY0
NzliN2FmZTI0NThjYi4uZWRmNTk3ODdjNWM5OGVhOGY5ZmVmNDI1MWE5NzFlYjU0MjdmODMwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBA
IC05Miw4ICs5Miw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQWJzb2x1dGUoVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdAogewogICAgIC8vIElmIHRoZSBtYXBw
aW5nIGluY2x1ZGVzIHNvbWV0aGluZyBsaWtlIGNvbHVtbnMsIHdlIGhhdmUgdG8gZ28gdmlhIHJl
bmRlcmVycy4KICAgICBpZiAoaGFzTm9uVW5pZm9ybVN0ZXAoKSkgewotICAgICAgICBib29sIGZp
eGVkID0gZmFsc2U7Ci0gICAgICAgIG1fbWFwcGluZy5sYXN0KCkubV9yZW5kZXJlci0+bWFwTG9j
YWxUb0NvbnRhaW5lcigwLCBmaXhlZCwgdHJ1ZSwgdHJhbnNmb3JtU3RhdGUsIFJlbmRlck9iamVj
dDo6QXBwbHlDb250YWluZXJGbGlwKTsKKyAgICAgICAgbV9tYXBwaW5nLmxhc3QoKS5tX3JlbmRl
cmVyLT5tYXBMb2NhbFRvQ29udGFpbmVyKDAsIHRyYW5zZm9ybVN0YXRlLCBVc2VUcmFuc2Zvcm1z
IHwgQXBwbHlDb250YWluZXJGbGlwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggNTliNmE0YTBhNWI5
OTQ1OTEzYjU1NzY0Mjg3NGEzNWNkMjYyMzdlOS4uZGExMjBiZWQxNzE0YTA4NjBkMzJjZTczY2M1
NzVkN2M3MDQyNDI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKQEAgLTExMTQsNyArMTExNCw3IEBAIExheW91dFNpemUgUmVuZGVySW5saW5lOjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvCiAgICAgcmV0
dXJuIG9mZnNldDsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCBhcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFw
TG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewogICAg
IGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzUs
MTggKzExMzUsMTggQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGIKICAgICBpZiAoIW8pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChhcHBseUNvbnRhaW5lckZsaXAgJiYgby0+aXNCb3goKSkg
eworICAgIGlmIChtb2RlICYgQXBwbHlDb250YWluZXJGbGlwICYmIG8tPmlzQm94KCkpIHsKICAg
ICAgICAgaWYgKG8tPnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIHsKICAg
ICAgICAgICAgIEludFBvaW50IGNlbnRlclBvaW50ID0gcm91bmRlZEludFBvaW50KHRyYW5zZm9y
bVN0YXRlLm1hcHBlZFBvaW50KCkpOwogICAgICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSh0
b1JlbmRlckJveChvKS0+ZmxpcEZvcldyaXRpbmdNb2RlSW5jbHVkaW5nQ29sdW1ucyhjZW50ZXJQ
b2ludCkgLSBjZW50ZXJQb2ludCk7CiAgICAgICAgIH0KLSAgICAgICAgYXBwbHlDb250YWluZXJG
bGlwID0gRG9Ob3RBcHBseUNvbnRhaW5lckZsaXA7CisgICAgICAgIG1vZGUgJj0gfkFwcGx5Q29u
dGFpbmVyRmxpcDsKICAgICB9CiAKICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9m
ZnNldEZyb21Db250YWluZXIobywgcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1h
cHBlZFBvaW50KCkpKTsKIAotICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYg
KG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7Ci0g
ICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihv
KSkgeworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUgJiBVc2VUcmFuc2Zvcm1zICYmIChvLT5z
dHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOworICAgIGlm
IChtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KG8pKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgICAgIGdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIobywgY29udGFpbmVyT2Zmc2V0LCB0KTsKICAgICAgICAgdHJhbnNm
b3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0odCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwpA
QCAtMTE2MSw3ICsxMTYxLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWlu
ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGIKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG8tPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5l
ciwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlLCBhcHBseUNvbnRhaW5lckZs
aXAsIHdhc0ZpeGVkKTsKKyAgICBvLT5tYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWlu
ZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CiAKIGNvbnN0IFJlbmRlck9i
amVjdCogUmVuZGVySW5saW5lOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXgg
OGI0NWE1Y2NhNDVkYTY3ZDU4NDRhN2FmODM0MmMzNzdjMTNhN2VkYS4uZTIwN2NhZjU4NmYwOTIx
M2VmYjM0OWY5MTJkYzkwNzQ5MTVmMmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0
ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBib29s
KiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVy
T2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBhYTdiNmJm
ZjVlNGRjZWRlNjQ2ZjZjZjEwNDMyYTIzYzUyOTVjNzhkLi5hNDQ0ZTExNGY4YTFjNzkwZDc4MDI4
ZGNmYjhhZmNlODFmZWE1NzZkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMTk4Nyw3ICsxOTg3LDEyIEBAIExheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojp2
aWV3UmVjdCgpIGNvbnN0CiBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6bG9jYWxUb0Fic29sdXRl
KGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsUG9pbnQsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcykgY29uc3QKIHsKICAgICBUcmFuc2Zvcm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zv
cm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24sIGxvY2FsUG9pbnQpOwotICAgIG1hcExv
Y2FsVG9Db250YWluZXIoMCwgZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsK
KyAgICBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcDsK
KyAgICBpZiAoZml4ZWQpCisgICAgICAgIG1vZGUgfD0gSXNGaXhlZDsKKyAgICBpZiAodXNlVHJh
bnNmb3JtcykKKyAgICAgICAgbW9kZSB8PSBVc2VUcmFuc2Zvcm1zOworICAgIG1hcExvY2FsVG9D
b250YWluZXIoMCwgdHJhbnNmb3JtU3RhdGUsIG1vZGUpOwogICAgIHRyYW5zZm9ybVN0YXRlLmZs
YXR0ZW4oKTsKICAgICAKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclBvaW50
KCk7CkBAIC0yMDAyLDcgKzIwMDcsNyBAQCBGbG9hdFBvaW50IFJlbmRlck9iamVjdDo6YWJzb2x1
dGVUb0xvY2FsKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRhaW5lclBvaW50LCBib29sCiAgICAgcmV0
dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQb2ludCgpOwogfQogCi12b2lkIFJlbmRlck9i
amVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYg
dHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90IGFwcGx5Q29udGFpbmVyRmxp
cCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0Nv
bnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3Jt
U3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjAxMywxMCArMjAxOCwxMCBAQCB2b2lkIFJlbmRlck9iamVj
dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgYgogCiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGNhbGwgb2Zmc2V0RnJvbUNvbnRh
aW5lciB0byBzaGFyZSBjb2RlLCBidXQgSSdtIG5vdCBzdXJlIGl0J3MgZXZlciBjYWxsZWQuCiAg
ICAgTGF5b3V0UG9pbnQgY2VudGVyUG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3Jt
U3RhdGUubWFwcGVkUG9pbnQoKSk7Ci0gICAgaWYgKGFwcGx5Q29udGFpbmVyRmxpcCAmJiBvLT5p
c0JveCgpKSB7CisgICAgaWYgKG1vZGUgJiBBcHBseUNvbnRhaW5lckZsaXAgJiYgby0+aXNCb3go
KSkgewogICAgICAgICBpZiAoby0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KSkKICAgICAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUodG9SZW5kZXJCb3gobyktPmZsaXBG
b3JXcml0aW5nTW9kZUluY2x1ZGluZ0NvbHVtbnMocm91bmRlZExheW91dFBvaW50KHRyYW5zZm9y
bVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNlbnRlclBvaW50KTsKLSAgICAgICAgYXBwbHlDb250
YWluZXJGbGlwID0gRG9Ob3RBcHBseUNvbnRhaW5lckZsaXA7CisgICAgICAgIG1vZGUgJj0gfkFw
cGx5Q29udGFpbmVyRmxpcDsKICAgICB9CiAKICAgICBMYXlvdXRTaXplIGNvbHVtbk9mZnNldDsK
QEAgLTIwMjcsNyArMjAzMiw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFp
bmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBiCiAgICAgaWYgKG8t
Pmhhc092ZXJmbG93Q2xpcCgpKQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC10b1JlbmRl
ckJveChvKS0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkpOwogCi0gICAgby0+bWFwTG9jYWxUb0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3Jt
U3RhdGUsIGFwcGx5Q29udGFpbmVyRmxpcCwgd2FzRml4ZWQpOworICAgIG8tPm1hcExvY2FsVG9D
b250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVk
KTsKIH0KIAogY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnB1c2hNYXBwaW5nVG9D
b250YWluZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJl
bmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKQEAgLTIxMDEsNyArMjEwNiwxMCBA
QCBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9h
dFF1YWQmIGxvY2FsUXVhZCwgUmVuZGVyQgogICAgIC8vIFRyYWNrIHRoZSBwb2ludCBhdCB0aGUg
Y2VudGVyIG9mIHRoZSBxdWFkJ3MgYm91bmRpbmcgYm94LiBBcyBtYXBMb2NhbFRvQ29udGFpbmVy
KCkgY2FsbHMgb2Zmc2V0RnJvbUNvbnRhaW5lcigpLAogICAgIC8vIGl0IHdpbGwgdXNlIHRoYXQg
cG9pbnQgYXMgdGhlIHJlZmVyZW5jZSBwb2ludCB0byBkZWNpZGUgd2hpY2ggY29sdW1uJ3MgdHJh
bnNmb3JtIHRvIGFwcGx5IGluIG11bHRpcGxlLWNvbHVtbiBibG9ja3MuCiAgICAgVHJhbnNmb3Jt
U3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6OkFwcGx5VHJhbnNmb3JtRGlyZWN0
aW9uLCBsb2NhbFF1YWQuYm91bmRpbmdCb3goKS5jZW50ZXIoKSwgbG9jYWxRdWFkKTsKLSAgICBt
YXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIGZpeGVkLCB0cnVlLCB0cmFuc2Zv
cm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgTWFwTG9jYWxUb0Nv
bnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZsaXAgfCBVc2VUcmFuc2Zvcm1zOwor
ICAgIGlmIChmaXhlZCkKKyAgICAgICAgbW9kZSB8PSBJc0ZpeGVkOworICAgIG1hcExvY2FsVG9D
b250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVk
KTsKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7CiAgICAgCiAgICAgcmV0dXJuIHRyYW5z
Zm9ybVN0YXRlLmxhc3RQbGFuYXJRdWFkKCk7CkBAIC0yMTEwLDcgKzIxMTgsMTAgQEAgRmxvYXRR
dWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBs
b2NhbFF1YWQsIFJlbmRlckIKIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQ29udGFp
bmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQb2ludCwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ewogICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlOjpBcHBs
eVRyYW5zZm9ybURpcmVjdGlvbiwgbG9jYWxQb2ludCk7Ci0gICAgbWFwTG9jYWxUb0NvbnRhaW5l
cihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdHJ1ZSwgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29u
dGFpbmVyRmxpcCwgd2FzRml4ZWQpOworICAgIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2Rl
ID0gQXBwbHlDb250YWluZXJGbGlwIHwgVXNlVHJhbnNmb3JtczsKKyAgICBpZiAoZml4ZWQpCisg
ICAgICAgIG1vZGUgfD0gSXNGaXhlZDsKKyAgICBtYXBMb2NhbFRvQ29udGFpbmVyKHJlcGFpbnRD
b250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiAgICAgdHJhbnNmb3Jt
U3RhdGUuZmxhdHRlbigpOwogCiAgICAgcmV0dXJuIHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQ
b2ludCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGUzMDM2
MjU0YmJiZjMyYjYxNmFlNmJhZWRlM2Q3Y2M3MmExMzU2Y2UuLmVhMTRmZTA5MDYwYzExMWRhM2Qx
OWQwM2MwYjA5NDQxNzRjZmMwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTEwNyw2ICsxMDcsMTMgQEAgZW51bSBQbGFjZUdlbmVyYXRlZFJ1bkluRmxhZyB7
CiAgICAgRG9Ob3RQbGFjZUdlbmVyYXRlZFJ1bkluCiB9OwogCitlbnVtIE1hcExvY2FsVG9Db250
YWluZXJNb2RlIHsKKyAgICBJc0ZpeGVkID0gMSA8PCAwLAorICAgIFVzZVRyYW5zZm9ybXMgPSAx
IDw8IDEsCisgICAgQXBwbHlDb250YWluZXJGbGlwID0gMSA8PCAyCit9OwordHlwZWRlZiB1bnNp
Z25lZCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3M7CisKIGNvbnN0IGludCBjYXJldFdpZHRoID0g
MTsKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJ
T04pCkBAIC04NzgsOCArODg1LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWFwIHBvaW50cyBhbmQg
cXVhZHMgdGhyb3VnaCBlbGVtZW50cywgcG90ZW50aWFsbHkgdmlhIDNkIHRyYW5zZm9ybXMuIFlv
dSBzaG91bGQgbmV2ZXIgbmVlZCB0byBjYWxsIHRoZXNlIGRpcmVjdGx5OyB1c2UKICAgICAvLyBs
b2NhbFRvQWJzb2x1dGUvYWJzb2x1dGVUb0xvY2FsIG1ldGhvZHMgaW5zdGVhZC4KLSAgICBlbnVt
IEFwcGx5Q29udGFpbmVyRmxpcE9yTm90IHsgRG9Ob3RBcHBseUNvbnRhaW5lckZsaXAsIEFwcGx5
Q29udGFpbmVyRmxpcCB9OwotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMs
IGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBB
cHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUg
PSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJh
bnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIC8vIFB1c2hlcyBzdGF0ZSBv
bnRvIFJlbmRlckdlb21ldHJ5TWFwIGFib3V0IGhvdyB0byBtYXAgY29vcmRpbmF0ZXMgZnJvbSB0
aGlzIHJlbmRlcmVyIHRvIGl0cyBjb250YWluZXIsIG9yIGFuY2VzdG9yVG9TdG9wQXQgKHdoaWNo
ZXZlciBpcyBlbmNvdW50ZXJlZCBmaXJzdCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKaW5kZXggOGJkNDljY2ZhZTFhZGRjOWY2Y2U2NWEyYzliZmQ5Mjk1NzM3NTE5Zi4u
N2RkMTIzYTdiOWI4Yjg4MTVlNzA1OWRmMGJmZWFhMGI4ZjQxMGVkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMTY1LDIwICsxNjUsMjAgQEAgdm9pZCBSZW5k
ZXJWaWV3OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAotdm9pZCBS
ZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9ybXMsIFRyYW5zZm9ybVN0
YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAordm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3Jt
U3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAw
IG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQg
Ynkgbm93LgogICAgIEFTU0VSVF9BUkcocmVwYWludENvbnRhaW5lciwgIXJlcGFpbnRDb250YWlu
ZXIgfHwgcmVwYWludENvbnRhaW5lciA9PSB0aGlzKTsKLSAgICBBU1NFUlRfVU5VU0VEKHdhc0Zp
eGVkLCAhd2FzRml4ZWQgfHwgKndhc0ZpeGVkID09IGZpeGVkKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHdhc0ZpeGVkLCAhd2FzRml4ZWQgfHwgKndhc0ZpeGVkID09IChtb2RlICYgSXNGaXhlZCkpOwog
Ci0gICAgaWYgKCFyZXBhaW50Q29udGFpbmVyICYmIHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNl
VHJhbnNmb3JtRnJvbUNvbnRhaW5lcigwKSkgeworICAgIGlmICghcmVwYWludENvbnRhaW5lciAm
JiBtb2RlICYgVXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KDApKSB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7CiAgICAgICAgIGdldFRyYW5z
Zm9ybUZyb21Db250YWluZXIoMCwgTGF5b3V0U2l6ZSgpLCB0KTsKICAgICAgICAgdHJhbnNmb3Jt
U3RhdGUuYXBwbHlUcmFuc2Zvcm0odCk7CiAgICAgfQogICAgIAotICAgIGlmIChmaXhlZCAmJiBt
X2ZyYW1lVmlldykKKyAgICBpZiAobW9kZSAmIElzRml4ZWQgJiYgbV9mcmFtZVZpZXcpCiAgICAg
ICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUobV9mcmFtZVZpZXctPnNjcm9sbE9mZnNldEZvckZpeGVk
UG9zaXRpb24oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4
IDA0YTgwNmU5YmNhNTkxZTE1YTY1N2ExMjgxYTJlMDFiZGVkZmJkMDguLjk4YmU1NTNmNmJhNjNj
Y2QxYmVkNWYyNjRmMjMxMzUzMWY5Yjk1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuaApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlbmRlckNv
dW50ZXJzKCkgeyByZXR1cm4gbV9yZW5kZXJDb3VudGVyQ291bnQ7IH0KIAogcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMsIGJvb2wgZml4ZWQsIFRyYW5z
Zm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBBcHBseUNvbnRhaW5lckZsaXAs
IGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUgPSBBcHBseUNvbnRhaW5lckZs
aXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNDb2x1bW5zKGludCBkZXNpcmVkQ29sdW1uQ291bnQpIGNvbnN0IE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAKaW5kZXggZDY2MDU2NjE1MDc5YWVjZjc2N2NjY2I5NzQ5ZTE1YzYxYTg1YmZj
Zi4uMGE5NzVmNDE1YjQ0MzhhNTJhMjYyODU2NDA0YjNmNDQ4MDRmZjZmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
Y3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIC8qIGZp
eGVkICovLCBib29sIC8qIHVzZVRyYW5zZm9ybXMgKi8sIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zv
cm1TdGF0ZSwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAor
dm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3Jt
U3RhdGUsIE1hcExvY2FsVG9Db250YWluZXJGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
CiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcih0aGlzLCByZXBhaW50
Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCA4
MGRkZmQ2MzA4ZGQ4ZjYzOWExNDVkMmQwNTMzZjAyNGI2ZjJiY2NjLi43ZGEzNmVhYzZmOGM3MzU2
MjY0M2Q1YzJmNTgyM2E1ZWExZDJhNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJh
bnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5
Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFw
cGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7
IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAwNTdiZmRhMDA3ZTJjNjg0
MzQ5ZTNjNzNmZWI4NmIwMWNmMzVkMzBhLi4yYzYzMTJlZWJlZmNhYTY5YjI4MGY3MmYxZDlkY2Rl
MjIzNTU4MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lOjpjb21w
dXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvCiAg
ICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVw
YWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJ
bmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgLyogdXNlVHJhbnNmb3JtcyAqLywgYm9vbCAvKiBmaXhlZCAqLywgVHJh
bnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0lubGluZTo6bWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmIHRyYW5zZm9ybVN0YXRlLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MsIGJvb2wqIHdhc0Zp
eGVkKSBjb25zdAogewogICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIo
dGhpcywgcmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDUz
M2E5OWFhNmIwMTc3ZTg3YmE4YzcwNGZhMTExYjExYjczNmM0MjguLjNkYzdkZGE4MDY5M2FiZjJh
ZDZkYWMyODA1ZmY2NDM2NzU2Y2VmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgRmxvYXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBib29sIGZpeGVkLCBUcmFuc2Zvcm1TdGF0
ZSYsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90ID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVy
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYs
IE1hcExvY2FsVG9Db250YWluZXJGbGFncyBtb2RlID0gQXBwbHlDb250YWluZXJGbGlwLCBib29s
KiB3YXNGaXhlZCA9IDApIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVy
T2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IDE4ZTdlY2FjZTdhM2EzYzY4ZDhmNWY0MDQ4OGYyZjZk
OTJiNTRlMTUuLjczMTQxNzljOGUwMzBiZThlZjM3MTQ1NWFkZTU4YzI1Yzg4NWE4ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNvbXB1
dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhCiAgICAgU1ZH
UmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWludENv
bnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdNb2RlbE9i
amVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCAvKiBmaXhlZCAqLywgYm9vbCAvKiB1c2VUcmFuc2Zvcm1zICovLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIEFwcGx5Q29udGFpbmVyRmxpcE9yTm90LCBib29s
KiB3YXNGaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9D
b250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9y
bVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzLCBib29sKiB3
YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFp
bmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmgKaW5kZXggMGQ4MTkyNjA5M2Y2YmY3NGVkYzA4YzQ4YzI4Nzk3NzRhNDRiMmQ2MC4uYjRj
M2Y2OGFhYTc3MDllMDRhZjdmZWM1ZGI5YTEwMWI0N2FjMTkxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIHVzZVRyYW5zZm9ybXMs
IGJvb2wgZml4ZWQsIFRyYW5zZm9ybVN0YXRlJiwgQXBwbHlDb250YWluZXJGbGlwT3JOb3QgPSBB
cHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdzIG1vZGUg
PSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lk
IHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CmluZGV4IDcwN2RhODg2ZTJjYTk4YTFiNjk2ZWVjNGIyNjAyOGY2NjY2ZmZkNWUuLjVkNTZiNWNl
Nzg5NzU4NTEwMzdkMTFkYjI4YWI0NjI1ZDkzN2Y2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk1LDEyICszOTUsMTIgQEAgdm9p
ZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnQKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJv
eCBjb29yZGluYXRlcy4KIC8vIENhbGxlcnMgd2l0aCBsb2NhbCBTVkcgdmlld3BvcnQgY29vcmRp
bmF0ZXMgc2hvdWxkIGZpcnN0IGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtCiAv
LyB0byBjb252ZXJ0IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2FsIENTUyBi
b3ggY29vcmRpbmF0ZXMuCi12b2lkIFJlbmRlclNWR1Jvb3Q6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wg
dXNlVHJhbnNmb3JtcywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRh
aW5lckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1Jvb3Q6
Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZs
YWdzIG1vZGUsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogewotICAgIEFTU0VSVCghZml4ZWQpOyAv
LyBXZSBzaG91bGQgaGF2ZSBubyBmaXhlZCBjb250ZW50IGluIHRoZSBTVkcgcmVuZGVyaW5nIHRy
ZWUuCi0gICAgQVNTRVJUKHVzZVRyYW5zZm9ybXMpOyAvLyBtYXBwaW5nIGEgcG9pbnQgdGhyb3Vn
aCBTVkcgdy9vIHJlc3BlY3RpbmcgdHJhc25mb3JtcyBpcyB1c2VsZXNzLgorICAgIEFTU0VSVCht
b2RlICYgfklzRml4ZWQpOyAvLyBXZSBzaG91bGQgaGF2ZSBubyBmaXhlZCBjb250ZW50IGluIHRo
ZSBTVkcgcmVuZGVyaW5nIHRyZWUuCisgICAgQVNTRVJUKG1vZGUgJiBVc2VUcmFuc2Zvcm1zKTsg
Ly8gbWFwcGluZyBhIHBvaW50IHRocm91Z2ggU1ZHIHcvbyByZXNwZWN0aW5nIHRyYXNuZm9ybXMg
aXMgdXNlbGVzcy4KIAotICAgIFJlbmRlclJlcGxhY2VkOjptYXBMb2NhbFRvQ29udGFpbmVyKHJl
cGFpbnRDb250YWluZXIsIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgQXBw
bHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgUmVuZGVyUmVwbGFjZWQ6Om1hcExvY2Fs
VG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUgfCBBcHBs
eUNvbnRhaW5lckZsaXAsIHdhc0ZpeGVkKTsKIH0KIAogY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJTVkdSb290OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4
IDlhYTdlN2MxODZhZTQ4NzY5MGM0MGFhYzkwNWZmNWNjMGQwMjM3NDQuLjNlMmYzYzcwZDczYWJk
YzQzNzAxNzZiNTIwOGFjMjQ5NDM1ZTIxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3JtcywgYm9vbCBmaXhlZCwgVHJhbnNmb3Jt
U3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9v
bCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3Rh
dGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9IEFwcGx5Q29udGFpbmVyRmxpcCwg
Ym9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5k
ZXggZDMwYmExY2Q2MTU3NzVmZDUzMGY3YmZjMTNhNmU2ZmZiMjQxOTc1MS4uMzk4YmFiZTAzZTQz
NzE4NDAxZDdjZTQ5YTUyYTJhNWYzYWI0NDVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBSZW5k
ZXJTVkdUZXh0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnQKICAgICBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRSZWN0Rm9y
UmVwYWludCh0aGlzLCByZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQog
Ci12b2lkIFJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLyogZml4ZWQgKi8sIGJvb2wgLyogdXNlVHJh
bnNmb3JtcyAqLywgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBBcHBseUNvbnRhaW5l
ckZsaXBPck5vdCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1RleHQ6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFwTG9jYWxUb0NvbnRhaW5lckZsYWdz
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2Nh
bFRvQ29udGFpbmVyKHRoaXMsIHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNG
aXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5o
CmluZGV4IDkzY2I2NGY4ZmIyZTc0ZWViMjg2YWViYjQ2MmQ3OWYyZjFiY2Q2ZGQuLmVlMmRiZGEy
M2I3NDFlMTczMjBjMWNkZGM5MWFjOTdlNTc1MGVlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBGbG9hdFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgdXNlVHJhbnNmb3Jtcywg
Ym9vbCBmaXhlZCwgVHJhbnNmb3JtU3RhdGUmLCBBcHBseUNvbnRhaW5lckZsaXBPck5vdCA9IEFw
cGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBMb2NhbFRvQ29udGFpbmVyRmxhZ3MgbW9kZSA9
IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0
cnlNYXAmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBj
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDBiZmIwYTUyNzljODg4
NDk0NjVlZGYyZjk1MWJmOGFlMDM0NGRhYzEuLjRiZDFhMjM5MTk5OGRhMTIwMTE5OWExODJmZDRm
MzdiZWRmMDEwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6
Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlckJv
eAogICAgIGlmIChwYXJlbnQtPmlzU1ZHUm9vdCgpKQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5h
cHBseVRyYW5zZm9ybSh0b1JlbmRlclNWR1Jvb3QocGFyZW50KS0+bG9jYWxUb0JvcmRlckJveFRy
YW5zZm9ybSgpKTsKICAgICAKLSAgICBwYXJlbnQtPm1hcExvY2FsVG9Db250YWluZXIocmVwYWlu
dENvbnRhaW5lciwgZmFsc2UsIHRydWUsIHRyYW5zZm9ybVN0YXRlLCBSZW5kZXJPYmplY3Q6OkRv
Tm90QXBwbHlDb250YWluZXJGbGlwLCB3YXNGaXhlZCk7CisgICAgcGFyZW50LT5tYXBMb2NhbFRv
Q29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBVc2VUcmFuc2Zvcm1z
LCB3YXNGaXhlZCk7CiB9CiAKIGNvbnN0IFJlbmRlck9iamVjdCogU1ZHUmVuZGVyU3VwcG9ydDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFw
JiBnZW9tZXRyeU1hcCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>