<?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>163895</bug_id>
          
          <creation_ts>2016-10-24 09:46:19 -0700</creation_ts>
          <short_desc>More PassRefPtr purging in WebCore.</short_desc>
          <delta_ts>2016-10-25 03:30:05 -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>WebCore Misc.</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1243732</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-10-24 09:46:19 -0700</bug_when>
    <thetext>Did a bit of Sunday night PassRefPtr removal. Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243734</commentid>
    <comment_count>1</comment_count>
      <attachid>292618</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-10-24 09:47:07 -0700</bug_when>
    <thetext>Created attachment 292618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243735</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-24 09:49:28 -0700</bug_when>
    <thetext>Attachment 292618 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderLayer.h:216:  &apos;createScrollbar&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedScrollbarOrientation&apos;.  [readability/naming/protected] [4]
ERROR: Source/WebCore/rendering/style/RenderStyle.h:1532:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 2 in 50 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244162</commentid>
    <comment_count>3</comment_count>
      <attachid>292618</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-25 02:54:46 -0700</bug_when>
    <thetext>Comment on attachment 292618
Patch

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

&gt; Source/WebCore/rendering/RenderThemeGtk.cpp:73
&gt;      static RenderTheme&amp; rt = RenderThemeGtk::create().leakRef();
&gt; -    return &amp;rt;
&gt; +    return rt;

You could also give it a real name.

&gt; Source/WebCore/rendering/RenderThemeMac.mm:203
&gt;      static RenderTheme&amp; rt = RenderThemeMac::create().leakRef();
&gt; -    return &amp;rt;
&gt; +    return rt;

Here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244169</commentid>
    <comment_count>4</comment_count>
      <attachid>292618</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-25 03:30:02 -0700</bug_when>
    <thetext>Comment on attachment 292618
Patch

Clearing flags on attachment: 292618

Committed r207814: &lt;http://trac.webkit.org/changeset/207814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244170</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-25 03:30:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292618</attachid>
            <date>2016-10-24 09:47:07 -0700</date>
            <delta_ts>2016-10-25 03:30:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163895.diff</filename>
            <type>text/plain</type>
            <size>61361</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ODZkZGQ1Li4yZTFkZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDE2LTEwLTI0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3JlIFBhc3NSZWZQdHIgcHVyZ2luZyBpbiBXZWJDb3JlLgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTYzODk1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIHVzYWdlIGluIFJlbmRlclN0eWxlLCBS
ZW5kZXJUaGVtZSBhbmQgU2Nyb2xsYmFyLCB0aGVuIGZpeCB1cCBhbGwgdGhlIGZhbGxvdXQuCisK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRlbnRUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXBlUHJv
cGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpw
cm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMpOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6OnVzZXNNZW51TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6cGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
Ojp0aGVtZVN1cHBvcnRzRGF0YUxpc3RVSSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRI
YXZlU3BpbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnNo
b3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcik6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWZDb3VudGVkUHJvcGVydHlXcmFwcGVyOjpSZWZDb3VudGVkUHJvcGVydHlXcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckNsaXBQYXRoOjpQcm9wZXJ0
eVdyYXBwZXJDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTaGFw
ZTo6UHJvcGVydHlXcmFwcGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbWFnZVBy
b3BlcnR5V3JhcHBlcjo6U3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpGaWxsTGF5ZXJSZWZDb3VudGVkUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJSZWZDb3Vu
dGVkUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllclN0eWxlSW1h
Z2VQcm9wZXJ0eVdyYXBwZXI6OkZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y3JlYXRlU2Ny
b2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Y3JlYXRl
TmF0aXZlU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNyZWF0ZVNj
cm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3JlYXRlTG9jYWxUcmFu
c2Zvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVy
QnlBcHBseWluZ1RyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3Vz
dG9tU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNlYXJjaEZpZWxkOjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lRWZsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRo
ZW1lRm9yUGFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0N1cnNvckRhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cnNvckRhdGE6OkN1cnNvckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Vyc29yRGF0YTo6c2V0SW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6c2V0SW1hZ2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1b3Rl
c0RhdGE6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6c2V0Q3Vyc29yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
UXVvdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXaWxsQ2hhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNl
dE1hc2tJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TWFza0JveElt
YWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCb3hSZWZsZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTaGFwZU91dHNpZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENsaXBQYXRoKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUNhY2hlZEltYWdlOjpjc3NWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NWYWx1
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmg6CisKIDIwMTYtMTAtMjEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0LnRleFN1Yklt
YWdlM0QoKSBzaG91bGQgdXNlIGEgdW5pb24gaW5zdGVhZCBvZiBvdmVybG9hZGluZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCAwNzc3NWQ1Li45NjIyNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTg0NSw3ICsxODQ1LDcgQEAgc3RhdGljIFJl
ZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKICAg
ICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3du
Y2FzdDxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZp
ZXIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsKICAgICAgICAgZWxz
ZSBpZiAoaXM8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKLSAgICAgICAgICAgIGxp
c3QuZ2V0KCkuYXBwZW5kKCpkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEp
LmltYWdlKCkuY3NzVmFsdWUoKSk7CisgICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChkb3du
Y2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCkuY3NzVmFsdWUoKSk7
CiAgICAgICAgIGVsc2UgaWYgKGlzPFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKICAg
ICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3du
Y2FzdDxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkudGV4dCgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORykpOwogICAgIH0KQEAgLTIzOTIsNyArMjM5Miw3IEBAIHN0YXRpYyBS
ZWY8Q1NTVmFsdWU+IHNoYXBlUHJvcGVydHlWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IFNoYXBlVmFsCiAKICAgICBpZiAoc2hhcGVWYWx1ZS0+dHlwZSgpID09IFNoYXBlVmFs
dWU6OlR5cGU6OkltYWdlKSB7CiAgICAgICAgIGlmIChzaGFwZVZhbHVlLT5pbWFnZSgpKQotICAg
ICAgICAgICAgcmV0dXJuICpzaGFwZVZhbHVlLT5pbWFnZSgpLT5jc3NWYWx1ZSgpOworICAgICAg
ICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPmltYWdlKCktPmNzc1ZhbHVlKCk7CiAgICAgICAgIHJl
dHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOwogICAgIH0KIApAQCAtMjU0Miw3ICsyNTQyLDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEZp
bGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJM
YXllci0+bmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJMYXllci0+aW1hZ2UoKSkK
LSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKCpjdXJyTGF5ZXItPmltYWdlKCktPmNz
c1ZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3VyckxheWVyLT5p
bWFnZSgpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENT
U1ZhbHVlTm9uZSkpOwogICAgICAgICAgICAgfQpAQCAtMjc5NSw3ICsyNzk1LDcgQEAgUmVmUHRy
PENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjdXJzb3JzLT5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0
eWxlSW1hZ2UqIGltYWdlID0gY3Vyc29ycy0+YXQoaSkuaW1hZ2UoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCgqaW1hZ2UtPmNzc1ZhbHVlKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGltYWdlLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUtPmN1cnNvcigpKTsKICAgICAgICAgICAgIGlmIChsaXN0KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggMDcyN2VlMS4uYTJlMDIxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtODYsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEVSZXNpemUgY29udmVydFJlc2l6ZShTdHlsZVJlc29sdmVy
JiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihT
dHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVl
U3BlZWQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UXVvdGVzRGF0YT4gY29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKKyAg
ICBzdGF0aWMgUmVmPFF1b3Rlc0RhdGE+IGNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJik7CiAgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBjb252ZXJ0VGV4dFVu
ZGVybGluZVBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBS
ZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKQEAgLTU4NSw3ICs1ODUsNyBAQCBpbmxpbmUgaW50IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmCiAgICAgcmV0dXJuIHNwZWVkOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxRdW90
ZXNEYXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgQVNT
RVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4
IDc1ZWQxZmQuLjRjYWI5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCkBAIC0xOTYsOSArMTk2LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJv
eFNlbGVjdEl0ZW0oaW50IGxpc3RJbmRleCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWMKIGJvb2wg
SFRNTFNlbGVjdEVsZW1lbnQ6OnVzZXNNZW51TGlzdCgpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JN
KElPUykKLSAgICBjb25zdCBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7Ci0gICAgUmVm
UHRyPFJlbmRlclRoZW1lPiByZW5kZXJUaGVtZSA9IHBhZ2UgPyAmcGFnZS0+dGhlbWUoKSA6IFJl
bmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKLSAgICBpZiAocmVuZGVyVGhlbWUtPmRlbGVnYXRl
c01lbnVMaXN0UmVuZGVyaW5nKCkpCisgICAgaWYgKFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Uo
ZG9jdW1lbnQoKS5wYWdlKCkpLT5kZWxlZ2F0ZXNNZW51TGlzdFJlbmRlcmluZygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiAhbV9tdWx0aXBsZSAmJiBtX3NpemUgPD0gMTsK
QEAgLTEwOTIsMTAgKzEwOTAsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCgpCiAK
IGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogewotICAgIGNvbnN0IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBh
Z2UoKTsKLSAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHJlbmRlclRoZW1lID0gcGFnZSA/ICZwYWdl
LT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOwotCi0gICAgaWYgKCFyZW5k
ZXJUaGVtZS0+cG9wc01lbnVCeUFycm93S2V5cygpKQorICAgIGlmICghUmVuZGVyVGhlbWU6OnRo
ZW1lRm9yUGFnZShkb2N1bWVudCgpLnBhZ2UoKSktPnBvcHNNZW51QnlBcnJvd0tleXMoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFpc1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZChkb2N1bWVudCgpLmZyYW1lKCkpKSB7CkBAIC0xMTI5LDggKzExMjQsNyBAQCB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgIEFTU0VSVChyZW5kZXJlcigpKTsKICAgICBBU1NFUlQocmVuZGVyZXIoKS0+aXNNZW51TGlz
dCgpKTsKIAotICAgIGNvbnN0IFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKLSAgICBS
ZWZQdHI8UmVuZGVyVGhlbWU+IHJlbmRlclRoZW1lID0gcGFnZSA/ICZwYWdlLT50aGVtZSgpIDog
UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gcmVu
ZGVyVGhlbWUgPSBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGRvY3VtZW50KCkucGFnZSgpKTsK
IAogICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewog
ICAgICAgICBpZiAoIWlzPEtleWJvYXJkRXZlbnQ+KGV2ZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmNwcAppbmRleCA1ODNhZDM4Li5hNzMwNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCkBAIC0xNzMsOCArMTczLDcgQEAgSW5wdXRUeXBlOjp+SW5wdXRUeXBlKCkKIGJvb2wgSW5w
dXRUeXBlOjp0aGVtZVN1cHBvcnRzRGF0YUxpc3RVSShJbnB1dFR5cGUqIHR5cGUpCiB7CiAgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gdHlwZS0+ZWxlbWVudCgpLmRvY3VtZW50KCk7Ci0gICAgUmVm
UHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRvY3VtZW50LnBhZ2UoKSA/ICZkb2N1bWVudC5wYWdl
KCktPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCk7Ci0gICAgcmV0dXJuIHRo
ZW1lLT5zdXBwb3J0c0RhdGFMaXN0VUkodHlwZS0+Zm9ybUNvbnRyb2xUeXBlKCkpOworICAgIHJl
dHVybiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGRvY3VtZW50LnBhZ2UoKSktPnN1cHBvcnRz
RGF0YUxpc3RVSSh0eXBlLT5mb3JtQ29udHJvbFR5cGUoKSk7CiB9CiAKIGJvb2wgSW5wdXRUeXBl
Ojppc1RleHRGaWVsZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHAKaW5kZXggMDE2ZjNlOC4uNjY0Y2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTIgQEAgYm9vbCBUZXh0Rmll
bGRJbnB1dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QKIAogYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6OnNob3VsZEhhdmVTcGluQnV0dG9uKCkgY29uc3QKIHsKLSAgICBEb2N1bWVudCYgZG9j
dW1lbnQgPSBlbGVtZW50KCkuZG9jdW1lbnQoKTsKLSAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRo
ZW1lID0gZG9jdW1lbnQucGFnZSgpID8gJmRvY3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRl
clRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKLSAgICByZXR1cm4gdGhlbWUtPnNob3VsZEhhdmVTcGlu
QnV0dG9uKGVsZW1lbnQoKSk7CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2Uo
ZWxlbWVudCgpLmRvY3VtZW50KCkucGFnZSgpKS0+c2hvdWxkSGF2ZVNwaW5CdXR0b24oZWxlbWVu
dCgpKTsKIH0KIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVDYXBzTG9ja0lu
ZGljYXRvcigpIGNvbnN0CiB7Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLmRv
Y3VtZW50KCk7Ci0gICAgUmVmUHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRvY3VtZW50LnBhZ2Uo
KSA/ICZkb2N1bWVudC5wYWdlKCktPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1l
KCk7Ci0gICAgcmV0dXJuIHRoZW1lLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoZWxlbWVu
dCgpKTsKKyAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50KCkuZG9j
dW1lbnQoKS5wYWdlKCkpLT5zaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoZWxlbWVudCgpKTsK
IH0KIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5kZXggYzA4NjA4MC4uOGMxMWM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC00MjEsNyAr
NDIxLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50JiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwKICAgICB9CiAKICAgICBwbHVnaW5FbGVt
ZW50LnN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKCp3aWRnZXQpOwotICAgIHJlbmRlcmVy
LT5zZXRXaWRnZXQod2lkZ2V0KTsKKyAgICByZW5kZXJlci0+c2V0V2lkZ2V0KFdURk1vdmUod2lk
Z2V0KSk7CiAgICAgbV9jb250YWluc1BsdWdpbnMgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDk2Y2QxMWMuLmQxZmI5YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIEZyYW1lVmll
dzo6dXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnMoKQogICAgICAgICBzZXRDYW5IYXZlU2Nyb2xsYmFy
cyh0cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxTY3JvbGxiYXI+IEZyYW1lVmlldzo6Y3JlYXRlU2Ny
b2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorUmVmPFNjcm9sbGJhcj4g
RnJhbWVWaWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24pCiB7CiAgICAgaWYgKCFmcmFtZSgpLnNldHRpbmdzKCkuYWxsb3dDdXN0b21TY3JvbGxiYXJJ
bk1haW5GcmFtZSgpICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIFNj
cm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcihvcmllbnRhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCAxNTYxNjU1Li45NThiMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAg
LTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuSGF2
ZVNjcm9sbGJhcnMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVDYW5IYXZlU2Nyb2xsYmFycygpOwogCi0gICAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0
ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgUmVmPFNjcm9s
bGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKaW5kZXggMWFhNzYyNC4uN2UxZDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtNDc0LDcgKzQ3
NCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgUmVmQ291bnRlZFByb3BlcnR5V3Jh
cHBlciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBSZWZDb3VudGVkUHJvcGVydHlXcmFwcGVyKENT
U1Byb3BlcnR5SUQgcHJvcCwgVCogKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lk
IChSZW5kZXJTdHlsZTo6KnNldHRlcikoUGFzc1JlZlB0cjxUPikpCisgICAgUmVmQ291bnRlZFBy
b3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3AsIFQqIChSZW5kZXJTdHlsZTo6KmdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFJlZlB0cjxUPiYmKSkKICAg
ICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+KHByb3AsIGdldHRlcikKICAgICAgICAg
LCBtX3NldHRlcihzZXR0ZXIpCiAgICAgewpAQCAtNDg2LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShQYXNz
UmVmUHRyPFQ+KTsKKyAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShSZWZQdHI8VD4m
Jik7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTUxMSw3ICs1MTEsNyBAQCBwcm90
ZWN0ZWQ6CiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJDbGlwUGF0aCA6IHB1YmxpYyBSZWZDb3VudGVk
UHJvcGVydHlXcmFwcGVyPENsaXBQYXRoT3BlcmF0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUHJvcGVydHlXcmFwcGVyQ2xpcFBhdGgoQ1NTUHJvcGVy
dHlJRCBwcm9wLCBDbGlwUGF0aE9wZXJhdGlvbiogKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNv
bnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoUGFzc1JlZlB0cjxDbGlwUGF0aE9wZXJh
dGlvbj4pKQorICAgIFByb3BlcnR5V3JhcHBlckNsaXBQYXRoKENTU1Byb3BlcnR5SUQgcHJvcCwg
Q2xpcFBhdGhPcGVyYXRpb24qIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAo
UmVuZGVyU3R5bGU6OipzZXR0ZXIpKFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4mJikpCiAgICAg
ICAgIDogUmVmQ291bnRlZFByb3BlcnR5V3JhcHBlcjxDbGlwUGF0aE9wZXJhdGlvbj4ocHJvcCwg
Z2V0dGVyLCBzZXR0ZXIpCiAgICAgewogICAgIH0KQEAgLTU2Myw3ICs1NjMsNyBAQCBwdWJsaWM6
CiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTaGFwZSA6IHB1YmxpYyBSZWZDb3VudGVkUHJvcGVydHlX
cmFwcGVyPFNoYXBlVmFsdWU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBQcm9wZXJ0eVdyYXBwZXJTaGFwZShDU1NQcm9wZXJ0eUlEIHByb3AsIFNoYXBlVmFs
dWUqIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oipz
ZXR0ZXIpKFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4pKQorICAgIFByb3BlcnR5V3JhcHBlclNoYXBl
KENTU1Byb3BlcnR5SUQgcHJvcCwgU2hhcGVWYWx1ZSogKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgp
IGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoUmVmUHRyPFNoYXBlVmFsdWU+JiYp
KQogICAgICAgICA6IFJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI8U2hhcGVWYWx1ZT4ocHJvcCwg
Z2V0dGVyLCBzZXR0ZXIpCiAgICAgewogICAgIH0KQEAgLTU5MCw3ICs1OTAsNyBAQCBwdWJsaWM6
CiBjbGFzcyBTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyIDogcHVibGljIFJlZkNvdW50ZWRQcm9w
ZXJ0eVdyYXBwZXI8U3R5bGVJbWFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9w
LCBTdHlsZUltYWdlKiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KSkKKyAgICBTdHlsZUltYWdl
UHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgU3R5bGVJbWFnZSogKFJlbmRlclN0
eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoUmVmUHRy
PFN0eWxlSW1hZ2U+JiYpKQogICAgICAgICA6IFJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI8U3R5
bGVJbWFnZT4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpCiAgICAgewogICAgIH0KQEAgLTEwMTQsNyAr
MTAxNCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgRmlsbExheWVyUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8
VCo+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBGaWxsTGF5
ZXJSZWZDb3VudGVkUHJvcGVydHlXcmFwcGVyKFQqIChGaWxsTGF5ZXI6OipnZXR0ZXIpKCkgY29u
c3QsIHZvaWQgKEZpbGxMYXllcjo6KnNldHRlcikoUGFzc1JlZlB0cjxUPikpCisgICAgRmlsbExh
eWVyUmVmQ291bnRlZFByb3BlcnR5V3JhcHBlcihUKiAoRmlsbExheWVyOjoqZ2V0dGVyKSgpIGNv
bnN0LCB2b2lkIChGaWxsTGF5ZXI6OipzZXR0ZXIpKFJlZlB0cjxUPiYmKSkKICAgICAgICAgOiBG
aWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+KGdldHRlcikKICAgICAgICAgLCBtX3Nl
dHRlcihzZXR0ZXIpCiAgICAgewpAQCAtMTAyNiwxMyArMTAyNiwxMyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCAoRmlsbExheWVyOjoqbV9zZXR0ZXIpKFBhc3NSZWZQ
dHI8VD4pOworICAgIHZvaWQgKEZpbGxMYXllcjo6Km1fc2V0dGVyKShSZWZQdHI8VD4mJik7CiB9
OwogCiBjbGFzcyBGaWxsTGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEZp
bGxMYXllclJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI8U3R5bGVJbWFnZT4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEZpbGxMYXllclN0eWxlSW1hZ2VQcm9w
ZXJ0eVdyYXBwZXIoU3R5bGVJbWFnZSogKEZpbGxMYXllcjo6KmdldHRlcikoKSBjb25zdCwgdm9p
ZCAoRmlsbExheWVyOjoqc2V0dGVyKShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KSkKKyAgICBGaWxs
TGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyKFN0eWxlSW1hZ2UqIChGaWxsTGF5ZXI6Oipn
ZXR0ZXIpKCkgY29uc3QsIHZvaWQgKEZpbGxMYXllcjo6KnNldHRlcikoUmVmUHRyPFN0eWxlSW1h
Z2U+JiYpKQogICAgICAgICA6IEZpbGxMYXllclJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI8U3R5
bGVJbWFnZT4oZ2V0dGVyLCBzZXR0ZXIpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKaW5kZXggMWViNDhmZi4uODRhZWJiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3QgPSAwOwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVB
cmVhJiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplKSA9IDA7Cisg
ICAgdmlydHVhbCBSZWY8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEm
LCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUpID0gMDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggYzFhYjJjZS4uODMx
MDRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExOCw3ICsx
MTgsNyBAQCBib29sIFNjcm9sbFZpZXc6OnNldEhhc1Njcm9sbGJhckludGVybmFsKFJlZlB0cjxT
Y3JvbGxiYXI+JiBzY3JvbGxiYXIsIFNjcm9sbGJhcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UGFzc1JlZlB0cjxTY3JvbGxiYXI+IFNjcm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK1JlZjxTY3JvbGxiYXI+IFNjcm9sbFZpZXc6OmNy
ZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBy
ZXR1cm4gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoKnRoaXMsIG9yaWVudGF0aW9u
LCBSZWd1bGFyU2Nyb2xsYmFyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApp
bmRleCA1YmU3NzNmLi5lMjY1MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
RGVsZWdhdGVzU2Nyb2xsaW5nKGJvb2wpOwogCiAgICAgLy8gT3ZlcnJpZGRlbiBieSBGcmFtZVZp
ZXcgdG8gY3JlYXRlIGN1c3RvbSBDU1Mgc2Nyb2xsYmFycyBpZiBhcHBsaWNhYmxlLgotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmll
bnRhdGlvbik7CisgICAgdmlydHVhbCBSZWY8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Ny
b2xsYmFyT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCA4MTg1NGZlLi44ODE4MWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsYmFyOjpjcmVh
dGVOYXRpdmVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgc2l6ZSkKK1Jl
ZjxTY3JvbGxiYXI+IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9sbGFibGVB
cmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNj
cm9sbGJhckNvbnRyb2xTaXplIHNpemUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3Jv
bGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9uLCBzaXplKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgc2l6ZSkp
OwogfQogCiBpbnQgU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggMWI4NDExMi4uZjg2YTk2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Myw3ICs0Miw3IEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lOwogY2xh
c3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCB7CiBwdWJsaWM6CiAgICAgLy8gTXVzdCBiZSBp
bXBsZW1lbnRlZCBieSBwbGF0Zm9ybXMgdGhhdCBjYW4ndCBzaW1wbHkgdXNlIHRoZSBTY3JvbGxi
YXIgYmFzZSBjbGFzcy4gIFJpZ2h0IG5vdyB0aGUgb25seSBwbGF0Zm9ybSB0aGF0IGlzIG5vdCB1
c2luZyB0aGUgYmFzZSBjbGFzcyBpcyBHVEsuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBh
c3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVOYXRpdmVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEm
LCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsYmFyPiBjcmVhdGVOYXRpdmVTY3JvbGxiYXIoU2Ny
b2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUp
OwogCiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDhjNjc1NTQuLmMwYWQ2NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVy
LmNwcApAQCAtODUsNyArODUsNyBAQCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjppbnB1dENvbnRleHQoKQogICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUlt
YWdlKCktPmNvbnRleHQoKSA6IG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVm
ZXJlbmNlRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24pCitSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwg
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24pCiB7CiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCmluZGV4IDJlZDg4NzAuLjJhOTZmYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBA
IC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCi0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIApAQCAtMTA4LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZl
ciogb3V0cHV0KCkgY29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7
IH0KIAogICAgIGJvb2wgYnVpbGQoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmLCBGaWx0ZXJDb25zdW1lcik7Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
UmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQqLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
cHJldmlvdXNFZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiopOworICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQqLCBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
biopOwogICAgIGJvb2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZp
bHRlclJlY3QpOwogICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMTNiOGM5My4uMmMw
NzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMTA1
LDcgKzMxMDUsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyRm9yU2Ny
b2xsYmFyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogICAgIHJldHVybiAmcmVuZGVy
ZXI7CiB9CiAKLVBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3JlYXRlU2Nyb2xs
YmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorUmVmPFNjcm9sbGJhcj4gUmVu
ZGVyTGF5ZXI6OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKIHsKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiB3aWRnZXQ7CiAgICAgUmVuZGVyRWxlbWVudCog
YWN0dWFsUmVuZGVyZXIgPSByZW5kZXJlckZvclNjcm9sbGJhcihyZW5kZXJlcigpKTsKQEAgLTMx
MjEsNyArMzEyMSw3IEBAIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJMYXllcjo6Y3JlYXRl
U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0CiAgICAgICAgIH0KICAgICB9
CiAgICAgcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkuYWRkQ2hpbGQod2lkZ2V0LmdldCgp
KTsKLSAgICByZXR1cm4gV1RGTW92ZSh3aWRnZXQpOworICAgIHJldHVybiB3aWRnZXQucmVsZWFz
ZU5vbk51bGwoKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6ZGVzdHJveVNjcm9sbGJhcihTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKQEAgLTQ5MjYsNyArNDkyNiw3IEBAIHN0YXRp
YyBkb3VibGUgY29tcHV0ZVpPZmZzZXQoY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSkKICAgICByZXR1cm4gYmFja21hcHBlZFBvaW50LnooKTsKIH0KIAotUGFz
c1JlZlB0cjxIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU+IFJlbmRlckxheWVyOjpjcmVhdGVMb2Nh
bFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250
YWluZXJMYXllciwKK1JlZjxIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU+IFJlbmRlckxheWVyOjpj
cmVhdGVMb2NhbFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxh
eWVyKiBjb250YWluZXJMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBoaXRUZXN0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiBjb250YWluZXJUcmFuc2Zvcm1TdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRT
aXplJiB0cmFuc2xhdGlvbk9mZnNldCkgY29uc3QKQEAgLTQ5NTQsNyArNDk1NCw3IEBAIFBhc3NS
ZWZQdHI8SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlPiBSZW5kZXJMYXllcjo6Y3JlYXRlTG9jYWxU
cmFuc2Zvcm1TdGF0ZShSZW5kCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLT50cmFuc2xhdGUob2Zm
c2V0LndpZHRoKCksIG9mZnNldC5oZWlnaHQoKSwgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRyYW5zZm9ybVN0
YXRlOworICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0ZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCiAK
QEAgLTUzMDgsNyArNTMwOCw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExh
eWVyQnlBcHBseWluZ1RyYW5zZm9ybShSZW5kZXJMYXllciogcm9vdExheWVyCiAgICAgY29uc3Qg
TGF5b3V0U2l6ZSYgdHJhbnNsYXRpb25PZmZzZXQpCiB7CiAgICAgLy8gQ3JlYXRlIGEgdHJhbnNm
b3JtIHN0YXRlIHRvIGFjY3VtdWxhdGUgdGhpcyB0cmFuc2Zvcm0uCi0gICAgUmVmUHRyPEhpdFRl
c3RpbmdUcmFuc2Zvcm1TdGF0ZT4gbmV3VHJhbnNmb3JtU3RhdGUgPSBjcmVhdGVMb2NhbFRyYW5z
Zm9ybVN0YXRlKHJvb3RMYXllciwgY29udGFpbmVyTGF5ZXIsIGhpdFRlc3RSZWN0LCBoaXRUZXN0
TG9jYXRpb24sIHRyYW5zZm9ybVN0YXRlLCB0cmFuc2xhdGlvbk9mZnNldCk7CisgICAgUmVmPEhp
dFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZT4gbmV3VHJhbnNmb3JtU3RhdGUgPSBjcmVhdGVMb2NhbFRy
YW5zZm9ybVN0YXRlKHJvb3RMYXllciwgY29udGFpbmVyTGF5ZXIsIGhpdFRlc3RSZWN0LCBoaXRU
ZXN0TG9jYXRpb24sIHRyYW5zZm9ybVN0YXRlLCB0cmFuc2xhdGlvbk9mZnNldCk7CiAKICAgICAv
LyBJZiB0aGUgdHJhbnNmb3JtIGNhbid0IGJlIGludmVydGVkLCB0aGVuIGRvbid0IGhpdCB0ZXN0
IHRoaXMgbGF5ZXIgYXQgYWxsLgogICAgIGlmICghbmV3VHJhbnNmb3JtU3RhdGUtPm1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCkBAIC01MzMwLDcgKzUzMzAsNyBAQCBSZW5k
ZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllcgogICAgICAgICBuZXdIaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0
TG9jYXRpb24obG9jYWxQb2ludCk7CiAKICAgICAvLyBOb3cgZG8gYSBoaXQgdGVzdCB3aXRoIHRo
ZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCi0gICAgcmV0dXJuIGhpdFRlc3RMYXllcih0
aGlzLCBjb250YWluZXJMYXllciwgcmVxdWVzdCwgcmVzdWx0LCBsb2NhbEhpdFRlc3RSZWN0LCBu
ZXdIaXRUZXN0TG9jYXRpb24sIHRydWUsIG5ld1RyYW5zZm9ybVN0YXRlLmdldCgpLCB6T2Zmc2V0
KTsKKyAgICByZXR1cm4gaGl0VGVzdExheWVyKHRoaXMsIGNvbnRhaW5lckxheWVyLCByZXF1ZXN0
LCByZXN1bHQsIGxvY2FsSGl0VGVzdFJlY3QsIG5ld0hpdFRlc3RMb2NhdGlvbiwgdHJ1ZSwgbmV3
VHJhbnNmb3JtU3RhdGUucHRyKCksIHpPZmZzZXQpOwogfQogCiBib29sIFJlbmRlckxheWVyOjpo
aXRUZXN0Q29udGVudHMoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgaGl0VGVzdExvY2F0aW9uLCBIaXRUZXN0RmlsdGVyIGhpdFRlc3RGaWx0ZXIpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGE5NTFmYmEuLjUw
ODdkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0yMTMsNyAr
MjEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29s
KTsKICAgICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwogCi0gICAgUGFzc1Jl
ZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbik7Cisg
ICAgUmVmPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uKTsK
ICAgICB2b2lkIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pOwogCiAgICAg
Ym9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbFNj
cm9sbGJhcigpOyB9CkBAIC04MzAsNyArODMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3Qg
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLAogICAg
ICAgICBib29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKIAotICAgIFBhc3NSZWZQdHI8SGl0VGVz
dGluZ1RyYW5zZm9ybVN0YXRlPiBjcmVhdGVMb2NhbFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVy
KiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwKKyAgICBSZWY8SGl0VGVz
dGluZ1RyYW5zZm9ybVN0YXRlPiBjcmVhdGVMb2NhbFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVy
KiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwKICAgICAgICAgY29uc3Qg
TGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsCiAgICAgICAg
IGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogY29udGFpbmVyVHJhbnNmb3JtU3RhdGUs
CiAgICAgICAgIGNvbnN0IExheW91dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0ID0gTGF5b3V0U2l6
ZSgpKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCA1ZGFhNmY5Li5iNzE2M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCkBAIC04OTYsNyArODk2LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94Ojpsb2dN
b2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKICAg
ICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNz
YWdlTGV2ZWw6OkRlYnVnLCAiUmVuZGVyTGlzdEJveDogIiArIG1lc3NhZ2UpOwogfQogCi1QYXNz
UmVmUHRyPFNjcm9sbGJhcj4gUmVuZGVyTGlzdEJveDo6Y3JlYXRlU2Nyb2xsYmFyKCkKK1JlZjxT
Y3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiB7CiAgICAgUmVmUHRy
PFNjcm9sbGJhcj4gd2lkZ2V0OwogICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFyU3R5bGUgPSBz
dHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUik7CkBAIC05MTEsNyArOTExLDcgQEAgUGFz
c1JlZlB0cjxTY3JvbGxiYXI+IFJlbmRlckxpc3RCb3g6OmNyZWF0ZVNjcm9sbGJhcigpCiAgICAg
ICAgIH0KICAgICB9CiAgICAgdmlldygpLmZyYW1lVmlldygpLmFkZENoaWxkKHdpZGdldC5nZXQo
KSk7Ci0gICAgcmV0dXJuIFdURk1vdmUod2lkZ2V0KTsKKyAgICByZXR1cm4gd2lkZ2V0LnJlbGVh
c2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgUmVuZGVyTGlzdEJveDo6ZGVzdHJveVNjcm9sbGJhcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBiMDNmZjMyNC4u
NWVmM2VkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC0x
NDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50SXRlbShQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYsIFBhaW50RnVuY3Rpb24pOwogCiAgICAgdm9pZCBzZXRIYXNWZXJ0
aWNhbFNjcm9sbGJhcihib29sIGhhc1Njcm9sbGJhcik7Ci0gICAgUGFzc1JlZlB0cjxTY3JvbGxi
YXI+IGNyZWF0ZVNjcm9sbGJhcigpOworICAgIFJlZjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJh
cigpOwogICAgIHZvaWQgZGVzdHJveVNjcm9sbGJhcigpOwogICAgIAogICAgIGludCBtYXhpbXVt
TnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdCb3R0b21BcmVhKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA4OWNhZWM0Li4zMGNi
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAg
LTU3MCwxNSArNTcwLDEyIEBAIEhvc3RXaW5kb3cqIFJlbmRlck1lbnVMaXN0Ojpob3N0V2luZG93
KCkgY29uc3QKICAgICByZXR1cm4gdmlldygpLmZyYW1lVmlldygpLmhvc3RXaW5kb3coKTsKIH0K
IAotUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFJlbmRlck1lbnVMaXN0OjpjcmVhdGVTY3JvbGxiYXIo
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCitSZWY8U2Nyb2xsYmFy
PiBSZW5kZXJNZW51TGlzdDo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRy
b2xTaXplIGNvbnRyb2xTaXplKQogewotICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldDsKICAg
ICBib29sIGhhc0N1c3RvbVNjcm9sbGJhclN0eWxlID0gc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShT
Q1JPTExCQVIpOwogICAgIGlmIChoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSkKLSAgICAgICAgd2lk
Z2V0ID0gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoc2Nyb2xsYWJsZUFy
ZWEsIG9yaWVudGF0aW9uLCAmc2VsZWN0RWxlbWVudCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHdp
ZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBv
cmllbnRhdGlvbiwgY29udHJvbFNpemUpOwotICAgIHJldHVybiBXVEZNb3ZlKHdpZGdldCk7Cisg
ICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3Jv
bGxhYmxlQXJlYSwgb3JpZW50YXRpb24sICZzZWxlY3RFbGVtZW50KCkpOworICAgIHJldHVybiBT
Y3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRp
b24sIGNvbnRyb2xTaXplKTsKIH0KIAogaW50IFJlbmRlck1lbnVMaXN0OjpjbGllbnRJbnNldExl
ZnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRl
eCAzY2FjZjc0Li5mYWFjNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuaApAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtdWx0aXBsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEm
LCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUpIG92ZXJyaWRlOwor
ICAgIFJlZjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYsIFNjcm9s
bGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgb3ZlcnJpZGU7CiAKICAgICBi
b29sIGhhc0xpbmVJZkVtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCmluZGV4IGY1MTA4
ZDQuLmM1MmE0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwCkBAIC0zNiw5ICszNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRy
PFNjcm9sbGJhcj4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIoU2Nyb2xs
YWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZSogb3duaW5nRnJhbWUpCitSZWY8U2Nyb2xs
YmFyPiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcihTY3JvbGxhYmxlQXJl
YSYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBFbGVt
ZW50KiBvd25lckVsZW1lbnQsIEZyYW1lKiBvd25pbmdGcmFtZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJlbmRlclNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sIG93
bmVyRWxlbWVudCwgb3duaW5nRnJhbWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5k
ZXJTY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEsIG9yaWVudGF0aW9uLCBvd25lckVsZW1lbnQsIG93
bmluZ0ZyYW1lKSk7CiB9CiAKIFJlbmRlclNjcm9sbGJhcjo6UmVuZGVyU2Nyb2xsYmFyKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIEVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWUqIG93bmluZ0ZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGQxNDEwYmIuLjc3YmVkNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJTY3JvbGxiYXIgZmluYWwg
OiBwdWJsaWMgU2Nyb2xsYmFyIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgU2Nyb2xsYmFy
OwotICAgIHN0YXRpYyBSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVDdXN0b21TY3JvbGxiYXIoU2Ny
b2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgRWxlbWVudCosIEZyYW1lKiBvd25p
bmdGcmFtZSA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWY8U2Nyb2xsYmFyPiBjcmVhdGVDdXN0
b21TY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgRWxlbWVu
dCosIEZyYW1lKiBvd25pbmdGcmFtZSA9IG51bGxwdHIpOwogICAgIHZpcnR1YWwgflJlbmRlclNj
cm9sbGJhcigpOwogCiAgICAgUmVuZGVyQm94KiBvd25pbmdSZW5kZXJlcigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggNDk3
ZjI1Mi4uNWJlMzcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Vh
cmNoRmllbGQuY3BwCkBAIC0zNDYsMTUgKzM0NiwxMiBAQCBIb3N0V2luZG93KiBSZW5kZXJTZWFy
Y2hGaWVsZDo6aG9zdFdpbmRvdygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXcoKS5mcmFtZVZpZXco
KS5ob3N0V2luZG93KCk7CiB9CiAKLVBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBSZW5kZXJTZWFyY2hG
aWVsZDo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Ny
b2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRy
b2xTaXplKQorUmVmPFNjcm9sbGJhcj4gUmVuZGVyU2VhcmNoRmllbGQ6OmNyZWF0ZVNjcm9sbGJh
cihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKIHsKLSAgICBSZWZQ
dHI8U2Nyb2xsYmFyPiB3aWRnZXQ7CiAgICAgYm9vbCBoYXNDdXN0b21TY3JvbGxiYXJTdHlsZSA9
IHN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKTsKICAgICBpZiAoaGFzQ3VzdG9tU2Ny
b2xsYmFyU3R5bGUpCi0gICAgICAgIHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3Vz
dG9tU2Nyb2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgJmlucHV0RWxlbWVudCgp
KTsKLSAgICBlbHNlCi0gICAgICAgIHdpZGdldCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Ny
b2xsYmFyKHNjcm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgY29udHJvbFNpemUpOwotICAgIHJl
dHVybiBXVEZNb3ZlKHdpZGdldCk7CisgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNy
ZWF0ZUN1c3RvbVNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYSwgb3JpZW50YXRpb24sICZpbnB1dEVs
ZW1lbnQoKSk7CisgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHNj
cm9sbGFibGVBcmVhLCBvcmllbnRhdGlvbiwgY29udHJvbFNpemUpOwogfQogCiBMYXlvdXRVbml0
IFJlbmRlclNlYXJjaEZpZWxkOjpjb21wdXRlTG9naWNhbEhlaWdodExpbWl0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmgKaW5kZXggZDIyOTgx
OS4uMzFjYTM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNl
YXJjaEZpZWxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFRleHRGcm9tSXRl
bSh1bnNpZ25lZCBsaXN0SW5kZXgpIG92ZXJyaWRlOwogICAgIEZvbnRTZWxlY3RvciogZm9udFNl
bGVjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNv
bnN0IG92ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIo
U2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNp
emUpIG92ZXJyaWRlOworICAgIFJlZjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxh
YmxlQXJlYSYsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgb3Zl
cnJpZGU7CiAKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdDsK
ICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCA3YzZmNTQ0Li4yNTg4NmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBvcHVwTWVudVN0eWxlLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsVHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02NywxMiArNjcsMTIgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMg
dG8gYmUgaW1wbGVtZW50ZWQgaW4geW91ciBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZSBpbXBsZW1l
bnRhdGlvbiB0byBoYW5kIGJhY2sgdGhlCiAgICAgLy8gYXBwcm9wcmlhdGUgcGxhdGZvcm0gdGhl
bWUuIFdoZW4gdGhlIHRoZW1lIGlzIG5lZWRlZCBpbiBub24tcGFnZSBkZXBlbmRlbnQgY29kZSwg
YSBkZWZhdWx0IHRoZW1lIGlzCiAgICAgLy8gdXNlZCBhcyBmYWxsYmFjaywgd2hpY2ggaXMgcmV0
dXJuZWQgZm9yIGEgbnVsbGVkIHBhZ2UsIHNvIHRoZSBwbGF0Zm9ybSBjb2RlIG5lZWRzIHRvIGFj
Y291bnQgZm9yIHRoaXMuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1l
Rm9yUGFnZShQYWdlKiBwYWdlKTsKKyAgICBzdGF0aWMgUmVmPFJlbmRlclRoZW1lPiB0aGVtZUZv
clBhZ2UoUGFnZSopOwogCiAgICAgLy8gV2hlbiB0aGUgdGhlbWUgaXMgbmVlZGVkIGluIG5vbi1w
YWdlIGRlcGVuZGVudCBjb2RlLCB0aGUgZGVmYXVsdFRoZW1lKCkgaXMgdXNlZCBhcyBmYWxsYmFj
ay4KLSAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IGRlZmF1bHRUaGVt
ZSgpCisgICAgc3RhdGljIGlubGluZSBSZWY8UmVuZGVyVGhlbWU+IGRlZmF1bHRUaGVtZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhlbWVGb3JQYWdlKDApOworICAgICAgICByZXR1cm4gdGhl
bWVGb3JQYWdlKG51bGxwdHIpOwogICAgIH07CiAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxs
ZWQgd2hlbmV2ZXIgc3R5bGUgaGFzIGJlZW4gY29tcHV0ZWQgZm9yIGFuIGVsZW1lbnQgYW5kIHRo
ZSBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNw
cAppbmRleCBhZDA2NmIyLi5kOTg2Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTQxMCwxNyArNDEwLDE3IEBAIGJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50VGhlbWVQYXJ0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRm9ybVR5
cGUgdHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBS
ZW5kZXJUaGVtZUVmbDo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCitSZWY8UmVuZGVyVGhlbWU+IFJlbmRl
clRoZW1lRWZsOjpjcmVhdGUoUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJlbmRlclRoZW1lRWZsKHBhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJU
aGVtZUVmbChwYWdlKSk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1l
Ojp0aGVtZUZvclBhZ2UoUGFnZSogcGFnZSkKK1JlZjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6
OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogewogICAgIGlmIChwYWdlKQogICAgICAgICByZXR1
cm4gUmVuZGVyVGhlbWVFZmw6OmNyZWF0ZShwYWdlKTsKIAotICAgIHN0YXRpYyBSZW5kZXJUaGVt
ZSogZmFsbGJhY2sgPSBSZW5kZXJUaGVtZUVmbDo6Y3JlYXRlKDApLmxlYWtSZWYoKTsKKyAgICBz
dGF0aWMgUmVuZGVyVGhlbWUmIGZhbGxiYWNrID0gUmVuZGVyVGhlbWVFZmw6OmNyZWF0ZSgwKS5s
ZWFrUmVmKCk7CiAgICAgcmV0dXJuIGZhbGxiYWNrOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IDA5MzA4N2MuLmU5NGQ4ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVFZmwoKTsKIAogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoUGFnZSopOworICAgIHN0YXRpYyBSZWY8
UmVuZGVyVGhlbWU+IGNyZWF0ZShQYWdlKik7CiAKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYg
dGhlIHRoZW1lJ3MgY29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hlbiBo
b3ZlcmVkLgogICAgIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVHdGsuY3BwCmluZGV4IGYxZjAxOWQuLjRiODZhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtNjcsMTAgKzY3LDEwIEBAIFJlZjxS
ZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVHdGs6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVuZGVyVGhlbWVHdGsoKSk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJl
bmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSopCitSZWY8UmVuZGVyVGhlbWU+IFJlbmRlclRo
ZW1lOjp0aGVtZUZvclBhZ2UoUGFnZSopCiB7CiAgICAgc3RhdGljIFJlbmRlclRoZW1lJiBydCA9
IFJlbmRlclRoZW1lR3RrOjpjcmVhdGUoKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuICZydDsKKyAg
ICByZXR1cm4gcnQ7CiB9CiAKIHN0YXRpYyBkb3VibGUgZ2V0U2NyZWVuRFBJKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA4YTM5NGFkLi5mMTQwODEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0yOTQs
MTAgKzI5NCwxMCBAQCBSZW5kZXJUaGVtZUlPUzo6UmVuZGVyVGhlbWVJT1MoKQogICAgIENGTm90
aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENl
bnRlcigpLCB0aGlzLCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlLCBVSUNvbnRlbnRTaXpl
Q2F0ZWdvcnlEaWRDaGFuZ2VOb3RpZmljYXRpb24sIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lv
bkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJUaGVt
ZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKikKK1JlZjxSZW5kZXJUaGVtZT4gUmVu
ZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKikKIHsKICAgICBzdGF0aWMgUmVuZGVyVGhlbWUm
IHJlbmRlclRoZW1lID0gUmVuZGVyVGhlbWVJT1M6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKLSAgICBy
ZXR1cm4gJnJlbmRlclRoZW1lOworICAgIHJldHVybiByZW5kZXJUaGVtZTsKIH0KIAogUmVmPFJl
bmRlclRoZW1lPiBSZW5kZXJUaGVtZUlPUzo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA2ZDIwNGU3Li5iZjg5YzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xOTcsMTAgKzE5NywxMCBA
QCBlbnVtIHsKICAgICBsZWZ0UGFkZGluZwogfTsKIAotUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4g
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKikKK1JlZjxSZW5kZXJUaGVtZT4gUmVuZGVy
VGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKikKIHsKICAgICBzdGF0aWMgUmVuZGVyVGhlbWUmIHJ0
ID0gUmVuZGVyVGhlbWVNYWM6OmNyZWF0ZSgpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gJnJ0Owor
ICAgIHJldHVybiBydDsKIH0KIAogUmVmPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZU1hYzo6Y3Jl
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IDYyMzdhMzMuLjJlZWVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcApAQCAtMTg4LDEwICsxODgsMTAgQEAgUmVmPFJlbmRlclRoZW1lPiBSZW5kZXJU
aGVtZVdpbjo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW5kZXJUaGVtZVdp
bik7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZvclBh
Z2UoUGFnZSogcGFnZSkKK1JlZjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZShQYWdlKiBwYWdlKQogewogICAgIHN0YXRpYyBSZW5kZXJUaGVtZSYgd2luVGhlbWUgPSBSZW5k
ZXJUaGVtZVdpbjo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgIHJldHVybiAmd2luVGhlbWU7Cisg
ICAgcmV0dXJuIHdpblRoZW1lOwogfQogCiBSZW5kZXJUaGVtZVdpbjo6UmVuZGVyVGhlbWVXaW4o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCAzNjgzMTlh
Li4zNzM5NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgUmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRHZW9tZXRy
eSgpCiAgICAgcmV0dXJuIHNldFdpZGdldEdlb21ldHJ5KGFic29sdXRlQ29udGVudEJveCk7CiB9
CiAKLXZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUGFzc1JlZlB0cjxXaWRnZXQ+IHdpZGdl
dCkKK3ZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUmVmUHRyPFdpZGdldD4mJiB3aWRnZXQp
CiB7CiAgICAgaWYgKHdpZGdldCA9PSBtX3dpZGdldCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmluZGV4IGU0MGQzNGEuLmU4MzAwMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZnJhbWVPd25lckVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KIAogICAgIFdpZGdldCogd2lkZ2V0KCkgY29uc3QgeyByZXR1cm4gbV93
aWRnZXQuZ2V0KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFdpZGdldChQYXNzUmVm
UHRyPFdpZGdldD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0V2lkZ2V0KFJlZlB0cjxX
aWRnZXQ+JiYpOwogCiAgICAgc3RhdGljIFJlbmRlcldpZGdldCogZmluZChjb25zdCBXaWRnZXQq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXJzb3JEYXRhLmgKaW5kZXgg
ZjhmNzc5YS4uZjI2Mzc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0N1cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vy
c29yRGF0YS5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q3Vyc29yRGF0YSB7CiBwdWJsaWM6Ci0gICAgQ3Vyc29yRGF0YShQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKLSAgICAgICAgOiBtX2ltYWdlKGlt
YWdlKQorICAgIEN1cnNvckRhdGEoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBob3RTcG90KQorICAgICAgICA6IG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCiAgICAg
ICAgICwgbV9ob3RTcG90KGhvdFNwb3QpCiAgICAgewogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZS5nZXQoKTsgfSAgICAKLSAgICB2b2lkIHNldEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4gaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9ICAgIAorICAgIHZvaWQgc2V0SW1hZ2Uo
UmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UpIHsgbV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOyB9
CiAKICAgICAvLyBIb3Qgc3BvdCBpbiB0aGUgaW1hZ2UgaW4gbG9naWNhbCBwaXhlbHMuCiAgICAg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBtX2hvdFNwb3Q7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAppbmRleCAyMzU4YjRkLi42
ODY0MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCkBA
IC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaXplU2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplVHlwZSAhPSBTaXplTm9uZTsgfQogICAgIGJvb2wgaXNNYXNrU291cmNlVHlw
ZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NvdXJjZVR5cGVTZXQ7IH0KIAotICAgIHZvaWQg
c2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7
IG1faW1hZ2VTZXQgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRJbWFnZShSZWZQdHI8U3R5bGVJbWFn
ZT4mJiBpbWFnZSkgeyBtX2ltYWdlID0gV1RGTW92ZShpbWFnZSk7IG1faW1hZ2VTZXQgPSB0cnVl
OyB9CiAgICAgdm9pZCBzZXRYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBtX3hQb3NpdGlvbiA9
IFdURk1vdmUobGVuZ3RoKTsgbV94UG9zU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0WVBvc2l0
aW9uKExlbmd0aCBsZW5ndGgpIHsgbV95UG9zaXRpb24gPSBXVEZNb3ZlKGxlbmd0aCk7IG1feVBv
c1NldCA9IHRydWU7IH0KICAgICB2b2lkIHNldEJhY2tncm91bmRYT3JpZ2luKEVkZ2UgbykgeyBt
X2JhY2tncm91bmRYT3JpZ2luID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG8pOyBtX2JhY2tncm91
bmRPcmlnaW5TZXQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUXVvdGVzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UXVvdGVzRGF0YS5jcHAKaW5kZXggNDNiMGRmMi4uMmMxYWNlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmNwcApAQCAtMjksMTAgKzI5LDEwIEBAIHN0
YXRpYyBzaXplX3Qgc2l6ZUZvclF1b3Rlc0RhdGFXaXRoUXVvdGVDb3VudCh1bnNpZ25lZCBjb3Vu
dCkKICAgICByZXR1cm4gc2l6ZW9mKFF1b3Rlc0RhdGEpICsgc2l6ZW9mKHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4pICogY291bnQ7CiB9CiAKLVBhc3NSZWZQdHI8UXVvdGVzRGF0YT4gUXVvdGVz
RGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcXVv
dGVzKQorUmVmPFF1b3Rlc0RhdGE+IFF1b3Rlc0RhdGE6OmNyZWF0ZShjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHF1b3RlcykKIHsKICAgICB2b2lkKiBzbG90ID0gZmFz
dE1hbGxvYyhzaXplRm9yUXVvdGVzRGF0YVdpdGhRdW90ZUNvdW50KHF1b3Rlcy5zaXplKCkpKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCBzbG90KSBRdW90ZXNEYXRhKHF1b3Rl
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBzbG90KSBRdW90ZXNEYXRh
KHF1b3RlcykpOwogfQogCiBRdW90ZXNEYXRhOjpRdW90ZXNEYXRhKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcXVvdGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9RdW90ZXNEYXRhLmgKaW5kZXggMDdlOTI1My4uOTEyYmUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0YS5oCkBAIC0yMiw3ICsyMiw2IEBACiAj
aWZuZGVmIFF1b3Rlc0RhdGFfaAogI2RlZmluZSBRdW90ZXNEYXRhX2gKIAotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNiw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUXVvdGVzRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFF1b3Rlc0RhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxR
dW90ZXNEYXRhPiBjcmVhdGUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JiBxdW90ZXMpOworICAgIHN0YXRpYyBSZWY8UXVvdGVzRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcXVvdGVzKTsKICAgICB+UXVvdGVzRGF0YSgp
OwogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdW90ZXNEYXRhJiwgY29uc3Qg
UXVvdGVzRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKaW5kZXggNWRkOWI5MS4uNGUzMjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC05NDUsMjcgKzk0NSwyNyBAQCB2b2lk
IFJlbmRlclN0eWxlOjpzZXRDbGlwKExlbmd0aCB0b3AsIExlbmd0aCByaWdodCwgTGVuZ3RoIGJv
dHRvbSwgTGVuZ3RoIGxlZnQpCiAgICAgZGF0YS0+Y2xpcC5sZWZ0KCkgPSBsZWZ0OwogfQogCi12
b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSwg
Y29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCit2b2lkIFJlbmRlclN0eWxlOjphZGRDdXJzb3IoUmVm
UHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewogICAg
IGlmICghcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEpCiAgICAgICAgIHJh
cmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gQ3Vyc29yTGlzdDo6Y3JlYXRl
KCk7Ci0gICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEtPmFwcGVuZChD
dXJzb3JEYXRhKGltYWdlLCBob3RTcG90KSk7CisgICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNz
KCktPmN1cnNvckRhdGEtPmFwcGVuZChDdXJzb3JEYXRhKFdURk1vdmUoaW1hZ2UpLCBob3RTcG90
KSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldEN1cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJz
b3JMaXN0PiBvdGhlcikKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEN1cnNvckxpc3QoUmVmUHRyPEN1
cnNvckxpc3Q+JiYgbGlzdCkKIHsKLSAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vy
c29yRGF0YSA9IG90aGVyOworICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JE
YXRhID0gV1RGTW92ZShsaXN0KTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6c2V0UXVvdGVzKFBh
c3NSZWZQdHI8UXVvdGVzRGF0YT4gcSkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFF1b3RlcyhSZWZQ
dHI8UXVvdGVzRGF0YT4mJiBxKQogewogICAgIGlmIChyYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVz
ID09IHEgfHwgKHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMgJiYgcSAmJiAqcmFyZUluaGVyaXRl
ZERhdGEtPnF1b3RlcyA9PSAqcSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhcmVJbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5xdW90ZXMgPSBxOworICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5xdW90ZXMgPSBXVEZNb3ZlKHEpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpzZXRXaWxs
Q2hhbmdlKFBhc3NSZWZQdHI8V2lsbENoYW5nZURhdGE+IHdpbGxDaGFuZ2VEYXRhKQordm9pZCBS
ZW5kZXJTdHlsZTo6c2V0V2lsbENoYW5nZShSZWZQdHI8V2lsbENoYW5nZURhdGE+JiYgd2lsbENo
YW5nZURhdGEpCiB7CiAgICAgaWYgKGFyZVBvaW50aW5nVG9FcXVhbERhdGEocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fd2lsbENoYW5nZS5nZXQoKSwgd2lsbENoYW5nZURhdGEuZ2V0KCkpKQogICAg
ICAgICByZXR1cm47CkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwZW5k
Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNvbnRlbnREYXRhKQogICAgICAg
ICBjb250ZW50ID0gV1RGTW92ZShjb250ZW50RGF0YSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6
OnNldENvbnRlbnQoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSwgYm9vbCBhZGQpCit2b2lk
IFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlLCBib29s
IGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xMDA4LDcgKzEw
MDgsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gaW1hZ2UsIGJvb2wgYWRkKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW1h
Z2VDb250ZW50RGF0YT4oaW1hZ2UpOworICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KFdURk1vdmUo
aW1hZ2UpKTsKICAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsdFRl
eHQuaXNOdWxsKCkpCiAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Nv
bnRlbnQtPnNldEFsdFRleHQocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWx0VGV4
dCk7CiB9CkBAIC0xMTc5LDEwICsxMTc5LDEwIEBAIHN0YXRpYyBSb3VuZGVkUmVjdDo6UmFkaWkg
Y2FsY1JhZGlpRm9yKGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgTGF5b3V0U2l6CiB9
CiAKIFN0eWxlSW1hZ2UqIFJlbmRlclN0eWxlOjpsaXN0U3R5bGVJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5saXN0U3R5bGVJbWFnZS5nZXQoKTsgfQotdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0TGlzdFN0eWxlSW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiB2KQordm9p
ZCBSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgdikK
IHsKICAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmxpc3RTdHlsZUltYWdlICE9IHYpCi0gICAg
ICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5saXN0U3R5bGVJbWFnZSA9IHY7CisgICAg
ICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5saXN0U3R5bGVJbWFnZSA9IFdURk1vdmUo
dik7CiB9CiAKIGNvbnN0IENvbG9yJiBSZW5kZXJTdHlsZTo6Y29sb3IoKSBjb25zdApAQCAtMTg3
OSwxMSArMTg3OSwxMSBAQCBzdGQ6OnBhaXI8Rm9udE9yaWVudGF0aW9uLCBOb25DSktHbHlwaE9y
aWVudGF0aW9uPiBSZW5kZXJTdHlsZTo6Zm9udEFuZEdseXBoT3JpZQogICAgIH0KIH0KIAotdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTb3VyY2UoUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBpbWFnZSkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU291cmNlKFJlZlB0cjxT
dHlsZUltYWdlPiYmIGltYWdlKQogewogICAgIGlmIChzdXJyb3VuZC0+Ym9yZGVyLm1faW1hZ2Uu
aW1hZ2UoKSA9PSBpbWFnZS5nZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHN1cnJvdW5kLmFj
Y2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRJbWFnZShpbWFnZSk7CisgICAgc3Vycm91bmQuYWNj
ZXNzKCktPmJvcmRlci5tX2ltYWdlLnNldEltYWdlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAogdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VTbGljZXMoTGVuZ3RoQm94IHNsaWNlcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggODdmYTc0
Ni4uM2YwNjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tncm91
bmRTaXplTGVuZ3RoKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9i
YWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwgV1RGTW92ZShzaXplKSk7IH0KICAgICAKICAgICB2b2lk
IHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2ltYWdlLCBiKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VTb3VyY2Uo
UGFzc1JlZlB0cjxTdHlsZUltYWdlPik7CisgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNvdXJjZShS
ZWZQdHI8U3R5bGVJbWFnZT4mJik7CiAgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNsaWNlcyhMZW5n
dGhCb3gpOwogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChMZW5ndGhCb3gpOwogICAgIHZv
aWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94KTsKQEAgLTE0NDIsMTAgKzE0NDIsMTAg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzZXRNYXNrSW1hZ2UoUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X21hc2suc2V0SW1hZ2Uodik7IH0KKyAgICB2b2lkIHNldE1hc2tJbWFnZShSZWZQdHI8U3R5bGVJ
bWFnZT4mJiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2suc2V0SW1h
Z2UoV1RGTW92ZSh2KSk7IH0KIAogICAgIHZvaWQgc2V0TWFza0JveEltYWdlKGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFza0JveElt
YWdlLCBiKTsgfQotICAgIHZvaWQgc2V0TWFza0JveEltYWdlU291cmNlKFBhc3NSZWZQdHI8U3R5
bGVJbWFnZT4gdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrQm94SW1h
Z2Uuc2V0SW1hZ2Uodik7IH0KKyAgICB2b2lkIHNldE1hc2tCb3hJbWFnZVNvdXJjZShSZWZQdHI8
U3R5bGVJbWFnZT4mJiB2KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2tC
b3hJbWFnZS5zZXRJbWFnZShXVEZNb3ZlKHYpKTsgfQogICAgIHZvaWQgc2V0TWFza1hQb3NpdGlv
bihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5t
X3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0TWFza1lQb3NpdGlv
bihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5t
X3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0TWFza1NpemUoTGVu
Z3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3Np
emVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYpOyB9CiAKICAgICB2
b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBpbmhlcml0ZWRfZmxhZ3Mu
X2xpc3Rfc3R5bGVfdHlwZSA9IHY7IH0KLSAgICB2b2lkIHNldExpc3RTdHlsZUltYWdlKFBhc3NS
ZWZQdHI8U3R5bGVJbWFnZT4pOworICAgIHZvaWQgc2V0TGlzdFN0eWxlSW1hZ2UoUmVmUHRyPFN0
eWxlSW1hZ2U+JiYpOwogICAgIHZvaWQgc2V0TGlzdFN0eWxlUG9zaXRpb24oRUxpc3RTdHlsZVBv
c2l0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3Bvc2l0aW9uID0gdjsgfQog
CiAgICAgdm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLCBMZW5n
dGhCb3goRml4ZWQpKTsgfQpAQCAtMTQ4MCw4ICsxNDgwLDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
Zy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAKICAgICB2b2lkIHNldEN1cnNvcihFQ3Vy
c29yIGMpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGUgPSBjOyB9Ci0gICAgdm9pZCBh
ZGRDdXJzb3IoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3Qg
PSBJbnRQb2ludCgpKTsKLSAgICB2b2lkIHNldEN1cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJzb3JM
aXN0Pik7CisgICAgdm9pZCBhZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYsIGNvbnN0IElu
dFBvaW50JiBob3RTcG90ID0gSW50UG9pbnQoKSk7CisgICAgdm9pZCBzZXRDdXJzb3JMaXN0KFJl
ZlB0cjxDdXJzb3JMaXN0PiYmKTsKICAgICB2b2lkIGNsZWFyQ3Vyc29yTGlzdCgpOwogCiAjaWYg
RU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Qm94T3JpZW50KEVCb3hPcmllbnQgbykgeyBTRVRfTkVTVEVEX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIG9yaWVudCwgbyk7IH0K
ICAgICB2b2lkIHNldEJveFBhY2soRUJveFBhY2sgcCkgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9kZXByZWNhdGVkRmxleGlibGVCb3gsIHBhY2ssIHApOyB9CiAgICAg
dm9pZCBzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9
IGZhbHNlKTsKLSAgICB2b2lkIHNldEJveFJlZmxlY3QoUGFzc1JlZlB0cjxTdHlsZVJlZmxlY3Rp
b24+IHJlZmxlY3QpIHsgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxlY3QgIT0g
cmVmbGVjdCkgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYm94UmVmbGVjdCA9IHJl
ZmxlY3Q7IH0KKyAgICB2b2lkIHNldEJveFJlZmxlY3QoUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4m
JiByZWZsZWN0KSB7IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ib3hSZWZsZWN0ICE9IHJl
ZmxlY3QpIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2JveFJlZmxlY3QgPSBXVEZN
b3ZlKHJlZmxlY3QpOyB9CiAgICAgdm9pZCBzZXRCb3hTaXppbmcoRUJveFNpemluZyBzKSB7IFNF
VF9WQVIobV9ib3gsIG1fYm94U2l6aW5nLCBzKTsgfQogICAgIHZvaWQgc2V0RmxleEdyb3coZmxv
YXQgZikgeyBTRVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJv
eCwgbV9mbGV4R3JvdywgZik7IH0KICAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikgeyBT
RVRfTkVTVEVEX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbGV4aWJsZUJveCwgbV9mbGV4
U2hyaW5rLCBmKTsgfQpAQCAtMTc5MiwxMSArMTc5MiwxMSBAQCBwdWJsaWM6CiAgICAgU1ZHTGVu
Z3RoIGtlcm5pbmcoKSBjb25zdCB7IHJldHVybiBzdmdTdHlsZSgpLmtlcm5pbmcoKTsgfQogICAg
IHZvaWQgc2V0S2VybmluZyhTVkdMZW5ndGggaykgeyBhY2Nlc3NTVkdTdHlsZSgpLnNldEtlcm5p
bmcoayk7IH0KIAotICAgIHZvaWQgc2V0U2hhcGVPdXRzaWRlKFBhc3NSZWZQdHI8U2hhcGVWYWx1
ZT4gdmFsdWUpCisgICAgdm9pZCBzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYg
dmFsdWUpCiAgICAgewogICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVP
dXRzaWRlID09IHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zaGFwZU91dHNpZGUgPSB2YWx1ZTsKKyAgICAgICAgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2hhcGVPdXRzaWRlID0gV1RGTW92ZSh2YWx1
ZSk7CiAgICAgfQogICAgIFNoYXBlVmFsdWUqIHNoYXBlT3V0c2lkZSgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlT3V0c2lkZS5nZXQoKTsgfQogCkBAIC0xODE0
LDEwICsxODE0LDEwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxT
aGFwZUltYWdlVGhyZXNob2xkKCkgeyByZXR1cm4gMDsgfQogCi0gICAgdm9pZCBzZXRDbGlwUGF0
aChQYXNzUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBvcGVyYXRpb24pCisgICAgdm9pZCBzZXRD
bGlwUGF0aChSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogICAgIHsKICAg
ICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NsaXBQYXRoICE9IG9wZXJhdGlvbikK
LSAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NsaXBQYXRoID0g
b3BlcmF0aW9uOworICAgICAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Y2xpcFBhdGggPSBXVEZNb3ZlKG9wZXJhdGlvbik7CiAgICAgfQogICAgIENsaXBQYXRoT3BlcmF0
aW9uKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Ns
aXBQYXRoLmdldCgpOyB9CiAKQEAgLTE4MjgsNyArMTgyOCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHRoaXMpLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Y29udGVudERhdGFFcXVpdmFsZW50KCpjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4o
b3RoZXJTdHlsZSktPnJhcmVOb25Jbmhlcml0ZWREYXRhKTsgfQogICAgIHZvaWQgY2xlYXJDb250
ZW50KCk7CiAgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkID0gZmFs
c2UpOwotICAgIHZvaWQgc2V0Q29udGVudChQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBib29sIGFk
ZCA9IGZhbHNlKTsKKyAgICB2b2lkIHNldENvbnRlbnQoUmVmUHRyPFN0eWxlSW1hZ2U+JiYsIGJv
b2wgYWRkID0gZmFsc2UpOwogICAgIHZvaWQgc2V0Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q291
bnRlckNvbnRlbnQ+LCBib29sIGFkZCA9IGZhbHNlKTsKICAgICB2b2lkIHNldENvbnRlbnQoUXVv
dGVUeXBlLCBib29sIGFkZCA9IGZhbHNlKTsKICAgICB2b2lkIHNldENvbnRlbnRBbHRUZXh0KGNv
bnN0IFN0cmluZyYpOwpAQCAtMTg0MSwxMCArMTg0MSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
Q291bnRlckRpcmVjdGl2ZXMgZ2V0Q291bnRlckRpcmVjdGl2ZXMoY29uc3QgQXRvbWljU3RyaW5n
JiBpZGVudGlmaWVyKSBjb25zdDsKIAogICAgIFF1b3Rlc0RhdGEqIHF1b3RlcygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFF1
b3RlcyhQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+KTsKKyAgICB2b2lkIHNldFF1b3RlcyhSZWZQdHI8
UXVvdGVzRGF0YT4mJik7CiAKICAgICBXaWxsQ2hhbmdlRGF0YSogd2lsbENoYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3dpbGxDaGFuZ2UuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldFdpbGxDaGFuZ2UoUGFzc1JlZlB0cjxXaWxsQ2hhbmdlRGF0YT4pOworICAgIHZv
aWQgc2V0V2lsbENoYW5nZShSZWZQdHI8V2lsbENoYW5nZURhdGE+JiYpOwogCiAgICAgYm9vbCB3
aWxsQ2hhbmdlQ3JlYXRlc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IGFhOTkzZTEuLmY3MDY5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKQEAgLTk2LDkgKzk2LDkgQEAgQ2FjaGVkSW1hZ2Uq
IFN0eWxlQ2FjaGVkSW1hZ2U6OmNhY2hlZEltYWdlKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNo
ZWRJbWFnZS5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVDYWNoZWRJbWFn
ZTo6Y3NzVmFsdWUoKSBjb25zdAorUmVmPENTU1ZhbHVlPiBTdHlsZUNhY2hlZEltYWdlOjpjc3NW
YWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q1NTVmFsdWUqPihtX2Nzc1Zh
bHVlLnB0cigpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NWYWx1ZSY+KG1fY3NzVmFsdWUu
Z2V0KCkpOwogfQogCiBib29sIFN0eWxlQ2FjaGVkSW1hZ2U6OmNhblJlbmRlcihjb25zdCBSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCmluZGV4IGQ2OWU4
NGYuLjRmNzljNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2UuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBXcmFwcGVk
SW1hZ2VQdHIgZGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0
KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAog
ICAgIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuY3BwCmluZGV4IDY2YzhjYmEuLmIwNzFmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM3LDkg
KzM3LDkgQEAgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZShSZWY8Q1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZT4mJiB2YWx1ZSkKICAgICBtX2lzR2VuZXJhdGVkSW1hZ2UgPSB0
cnVlOwogfQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjc3NW
YWx1ZSgpIGNvbnN0CitSZWY8Q1NTVmFsdWU+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVl
Kj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLnB0cigpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxD
U1NJbWFnZUdlbmVyYXRvclZhbHVlJj4obV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpKTsKIH0K
IAogYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjppc1BlbmRpbmcoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKaW5k
ZXggMGJmNGNjNC4uMjU5MDVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6
CiAKICAgICBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aW1hZ2VHZW5lcmF0b3JWYWx1ZS5wdHIoKTsgfQogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Y3NzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUltYWdlLmgKaW5kZXggZTZkM2EwNy4uNTM0ZjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiQ1NT
VmFsdWUuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtNDks
NyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZUltYWdlJiBvdGhlcikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxDU1NWYWx1ZT4g
Y3NzVmFsdWUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0
IFJlbmRlckVsZW1lbnQqLCBmbG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCmluZGV4IGYx
NmVhNWYuLjU5NjVkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZU11bHRpQ29sRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZU11bHRpQ29sRGF0YS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQm9yZGVy
VmFsdWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0
YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggYTc3NmMz
Yy4uMzFhZTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGVhZGIwZmMuLmVkOWIxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxNi0xMC0yNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgTW9yZSBQYXNzUmVmUHRyIHB1cmdpbmcgaW4gV2ViQ29yZS4KKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE2Mzg5NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIpOgor
CiAyMDE2LTEwLTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBJbnB1dEV2ZW50LmdldFRhcmdldFJhbmdlcygpIGZvciB0aGUgaW5w
dXQgZXZlbnRzIHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLmgKaW5kZXggN2JmYTQ2YS4uMTQ1NmE1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXBy
ZWNhdGVkUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9EZXByZWNhdGVkUERGUGx1Z2luLmgKQEAgLTIxOCw3ICsyMTgsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gUERGUGx1Z2luIGZ1bmN0aW9ucy4KICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMo
KTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFdl
YkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKTsKKyAgICBSZWY8V2ViQ29yZTo6U2Nyb2xsYmFy
PiBjcmVhdGVTY3JvbGxiYXIoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24pOwogICAgIHZv
aWQgZGVzdHJveVNjcm9sbGJhcihXZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAgICAg
dm9pZCBwZGZEb2N1bWVudERpZExvYWQoKTsKICAgICB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXBy
ZWNhdGVkUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9EZXByZWNhdGVkUERGUGx1Z2luLm1tCmluZGV4IDhiYjNlM2YuLjVlZGU1NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJl
Y2F0ZWRQREZQbHVnaW4ubW0KQEAgLTY0OSw3ICs2NDksNyBAQCBjb25zdCBQbHVnaW5WaWV3KiBQ
REZQbHVnaW46OnBsdWdpblZpZXcoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBQbHVnaW5WaWV3Kj4oY29udHJvbGxlcigpKTsKIH0KIAotUGFzc1JlZlB0cjxTY3JvbGxiYXI+
IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQorUmVmPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgYXV0byB3aWRnZXQgPSBTY3JvbGxiYXI6
OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcigqdGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxi
YXIpOwogICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CkBAIC02
NTksMTQgKzY1OSwxNCBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVT
Y3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpbwogICAgICAgICBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdE5TKFtbV0tQREZQbHVnaW5TY3JvbGxiYXJMYXllciBh
bGxvY10gaW5pdFdpdGhQREZQbHVnaW46dGhpc10pOwogICAgICAgICBbbV9jb250YWluZXJMYXll
ciBhZGRTdWJsYXllcjptX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwogICAgIH0KLSAg
ICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0LmdldCgpLCBvcmllbnRhdGlvbik7CisgICAgZGlkQWRk
U2Nyb2xsYmFyKHdpZGdldC5wdHIoKSwgb3JpZW50YXRpb24pOwogICAgIGlmIChGcmFtZSogZnJh
bWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKSkgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChwYWdlLT5leHBlY3RzV2hlZWxFdmVu
dFRyaWdnZXJzKCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2
ZW50VGVzdFRyaWdnZXIocGFnZS0+dGVzdFRyaWdnZXIoKSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5nZXQoKSk7
CisgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT52aWV3KCktPmFkZENoaWxkKHdpZGdldC5wdHIo
KSk7CiAgICAgcmV0dXJuIHdpZGdldDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>