<?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>109466</bug_id>
          
          <creation_ts>2013-02-11 11:31:13 -0800</creation_ts>
          <short_desc>[Mac] Track language selection should be sticky</short_desc>
          <delta_ts>2013-02-11 22:33:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>dino</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829939</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 11:31:13 -0800</bug_when>
    <thetext>Choosing a text track from the menu should make that track&apos;s language the preferred caption language. Turning captions off from the menu should disable captions in videos loaded subsequently. 

OS X has system support for these settings, so changes made by DRT should not change the settings on the user&apos;s system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829942</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-02-11 11:32:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/13191732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829987</commentid>
    <comment_count>2</comment_count>
      <attachid>187640</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 12:32:33 -0800</bug_when>
    <thetext>Created attachment 187640
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830011</commentid>
    <comment_count>3</comment_count>
      <attachid>187645</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 13:05:11 -0800</bug_when>
    <thetext>Created attachment 187645
Updated: add missing export to autotools/symbols.filter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830060</commentid>
    <comment_count>4</comment_count>
      <attachid>187645</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-11 13:32:31 -0800</bug_when>
    <thetext>Comment on attachment 187645
Updated: add missing export to autotools/symbols.filter

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

&gt; Source/autotools/symbols.filter:268
&gt; +_ZN7WebCore9PageGroup18captionPreferencesEv

Missing ; at the end of line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830062</commentid>
    <comment_count>5</comment_count>
      <attachid>187654</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 13:35:50 -0800</bug_when>
    <thetext>Created attachment 187654
Skip the new test on ports that don&apos;t have a caption menu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830066</commentid>
    <comment_count>6</comment_count>
      <attachid>187656</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 13:40:46 -0800</bug_when>
    <thetext>Created attachment 187656
Add the missing &apos;;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830097</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 14:03:15 -0800</bug_when>
    <thetext>Philippe, do you know what symbol I need to export for WebCore::Page::initGroup() :

./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::resetToConsistentState(WebCore::Page*)&apos;:
Internals.cpp:(.text+0x3b0c): undefined reference to `WebCore::Page::initGroup()&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830111</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-11 14:13:04 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Philippe, do you know what symbol I need to export for WebCore::Page::initGroup() :
&gt; 
&gt; ./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::resetToConsistentState(WebCore::Page*)&apos;:
&gt; Internals.cpp:(.text+0x3b0c): undefined reference to `WebCore::Page::initGroup()&apos;


initGroup is: _ZN7WebCore4Page9initGroupEv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830115</commentid>
    <comment_count>9</comment_count>
      <attachid>187671</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 14:17:06 -0800</bug_when>
    <thetext>Created attachment 187671
Export Page::initGroup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830137</commentid>
    <comment_count>10</comment_count>
      <attachid>187671</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-11 14:32:56 -0800</bug_when>
    <thetext>Comment on attachment 187671
Export Page::initGroup.

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

&gt; Source/autotools/symbols.filter:269
&gt; +_ZN7WebCore9PageGroup18captionPreferencesEv;
&gt; +_ZN7WebCore4Page9initGroupEv;

You don&apos;t need to guard these with VIDEO_TRACK like in exp.in?

&gt; LayoutTests/media/track/track-user-preferences.html:117
&gt; +                    createTrackElements([ &apos;no&apos;, &apos;fr&apos;, &apos;en&apos;,]);

trailing comma

&gt; LayoutTests/media/track/track-user-preferences.html:127
&gt; +                    createTrackElements([ &apos;ru&apos;, &apos;jp&apos;, &apos;en&apos;,]);

trailing comma</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830569</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-11 22:33:22 -0800</bug_when>
    <thetext>Committed in http://trac.webkit.org/r142580</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187640</attachid>
            <date>2013-02-11 12:32:33 -0800</date>
            <delta_ts>2013-02-11 13:05:11 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_8.txt</filename>
            <type>text/plain</type>
            <size>33813</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDEzLTAyLTExICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFRyYWNrIGxh
bmd1YWdlIHNlbGVjdGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaG9vc2luZyBhIHRleHQgdHJhY2sgZnJvbSB0aGUg
Y2FwdGlvbiBtZW51IHNob3VsZCBtYWtlIHRoYXQgdHJhY2sncyBsYW5ndWFnZSB0aGUKKyAgICAg
ICAgcHJlZmVycmVkIGNhcHRpb24gbGFuZ3VhZ2UuIFR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZyb20g
dGhlIG1lbnUgc2hvdWxkIGRpc2FibGUgY2FwdGlvbnMKKyAgICAgICAgaW4gdmlkZW9zIGxvYWRl
ZCBzdWJzZXF1ZW50bHkuCisKKyAgICAgICAgT1MgWCBoYXMgc3lzdGVtIHN1cHBvcnQgZm9yIHRo
ZXNlIHNldHRpbmdzLCBzbyBjaGFuZ2VzIG1hZGUgYnkgRFJUIHNob3VsZCBub3QgY2hhbmdlIHRo
ZQorICAgICAgICBzZXR0aW5ncyBvbiB0aGUgdXNlcidzIHN5c3RlbS4gQWRkIHN1cHBvcnQgZm9y
IGFsbCBvdGhlciBwb3J0cyBpbiBEUlQgb25seS4KKworICAgICAgICBUZXN0OiBtZWRpYS90cmFj
ay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogVXNlIHBhZ2UoKS0+Z3JvdXAo
KS5jYXB0aW9uUHJlZmVyZW5jZXMoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmF0dGFjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
ZGV0YWNoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2Vy
UHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCk6IERpdHRvLiBVcGRhdGUgZm9yIAorICAgICAg
ICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVUcmFja0F0SW5kZXgpOiBTZXQgdXNlciBwcmVmcyBm
b3IgY2FwdGlvbnMgdmlzaWJsZSBhbmQKKyAgICAgICAgICAgIGNhcHRpb24gbGFuZ3VhZ2UgYXMg
YXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNr
TGlzdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBSZW1vdmUgdW5uZWVkZWQgY29tbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6OnVwZGF0ZVNpemVzKTogIFVzZSBwYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2Vz
KCkuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpjbG9zZWRDYXB0aW9uVHJhY2tzQ2hh
bmdlZCk6IFVwZGF0ZSBjYXB0aW9uIG1lbnUgYnV0dG9uIHZpc2liaWxpdHkuCisKKyAgICAgICAg
KiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBTdXBwb3J0ICJ0ZXN0aW5n
IiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNl
clByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVucmVnaXN0ZXJG
b3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5ndWFn
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRl
c3RpbmdNb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjpzZXRUZXN0aW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyk6IERpdHRvLgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6dXNlclByZWZlcnNDYXB0aW9ucyk6IFN1cHBvcnQgInRlc3RpbmciIG1v
ZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRVc2Vy
UHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvclByZWZlcmVu
Y2VzQ2hhbmdlZENhbGxiYWNrcyk6IENoYW5nZSBuYW1lIGZyb20KKyAgICAgICAgICAgIHJlZ2lz
dGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcy4gU3VwcG9ydCAidGVzdGlu
ZyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVu
cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiAgQ2hhbmdlIG5hbWUgZnJv
bQorICAgICAgICAgICAgdW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MuIFN1cHBvcnQgInRlc3RpbmciIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSk6IFN1cHBvcnQg
InRlc3RpbmciIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnByZWZlcnJlZExhbmd1
YWdlcyk6IERpdHRvLiBSZXR1cm4gdGhlIHBsYXRmb3JtIG92ZXJyaWRlIHdoZW4gc2V0LgorCisg
ICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3Vw
OjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBSZW1vdmUg
YmVjYXVzZSBpdCBpcyBhbHJlYWR5CisgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSB0aGUgY2Fw
dGlvbiBwcmVmZXJlbmNlIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6dW5y
ZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNhcHRpb25Gb250U2l6ZVNjYWxl
KTogRGl0dG8uCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlRnJv
bUxpc3QpOiBUYWtlIHRoZSBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMgaW5zdGVhZCBvZiBh
c3N1bWluZworICAgICAgICAgICAgdGhlIHN5c3RlbSBsaXN0LgorICAgICAgICAqIHBsYXRmb3Jt
L0xhbmd1YWdlLmg6CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBEaXNhYmxlIGNh
cHRpb24gdGVzdGluZyBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5h
bHMpOiBFbmFibGUgY2FwdGlvbiB0ZXN0aW5nIG1vZGUgc28gdGhlIHVzZXIncyBzeXN0ZW0KKyAg
ICAgICAgICAgIHByZWZlcmVuY2VzIGFyZSBub3QgbW9kaWZpZWQuCisKIDIwMTMtMDItMTEgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBUaW1lbGluZTogaW52YWxpZGF0ZSBhbmQgZm9yY2UgbG9jYXRpb25zIGFyZSBzYW1lIGZv
ciBMYXlvdXQgcmVjb3JkcyBjYXVzZWQgYnkgc3R5bGUgcmVjYWxjdWxhaXRvbgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcyLDMgKzI3NzIsNyBAQCBfX1pON1dlYkNv
cmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyNWFyCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKIF9fWk43V2ViQ29yZTNDRE0xOHJlZ2lzdGVyQ0RNRmFjdG9yeUVQRk4zV1RGMTBQYXNz
T3duUHRySU5TXzE5Q0RNUHJpdmF0ZUludGVyZmFjZUVFRVBTMF9FUEZiUktOUzFfNlN0cmluZ0VF
CiAjZW5kaWYKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK19fWk43V2ViQ29yZTlQYWdlR3Jv
dXAxOGNhcHRpb25QcmVmZXJlbmNlc0V2CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDkgKzMx
Nyw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKIAogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSkgewotICAgICAgICBQ
YWdlR3JvdXAmIGdyb3VwID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKTsKLSAgICAgICAgaWYg
KGdyb3VwLnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSkKLSAgICAgICAgICAgIG1fZGlzYWJs
ZUNhcHRpb25zID0gIWdyb3VwLnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gZG9jdW1lbnQtPnBhZ2UoKS0+
Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICAgICAgaWYgKGNhcHRpb25QcmVmZXJl
bmNlcy0+dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpKQorICAgICAgICAgICAgbV9kaXNhYmxl
Q2FwdGlvbnMgPSAhY2FwdGlvblByZWZlcmVuY2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAg
ICAgfQogI2VuZGlmCiB9CkBAIC01OTEsNyArNTkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjphdHRhY2goKQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChkb2N1bWVudCgp
LT5wYWdlKCkpCi0gICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5yZWdpc3RlckZv
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CisgICAgICAgIGRvY3Vt
ZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+cmVnaXN0ZXJGb3JQ
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNTk5LDcg
KzU5OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKCkKIHsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgZG9jdW1l
bnQoKS0+cGFnZSgpLT5ncm91cCgpLnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCktPnVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3ModGhpcyk7CiAjZW5kaWYKICAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CkBAIC0y
OTkyLDggKzI5OTIsOCBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJQcmVmZXJzQ2FwdGlv
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBQYWdlR3JvdXAm
IGdyb3VwID0gcGFnZS0+Z3JvdXAoKTsKLSAgICByZXR1cm4gZ3JvdXAudXNlckhhc0NhcHRpb25Q
cmVmZXJlbmNlcygpICYmIGdyb3VwLnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKKyAgICBDYXB0aW9u
VXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNhcHRp
b25QcmVmZXJlbmNlcygpOworICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJIYXND
YXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzQ2Fw
dGlvbnMoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5U
aGlzVHJhY2tLaW5kKFN0cmluZyBraW5kKSBjb25zdApAQCAtMzAxOSwxNSArMzAxOSwxNSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFjCiAgICAgQVNTRVJUKGdyb3Vw
LnRyYWNrcy5zaXplKCkpOwogCiAgICAgU3RyaW5nIGJlc3RNYXRjaGluZ0xhbmd1YWdlOwotICAg
IGlmIChncm91cC5oYXNTcmNMYW5nKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdl
czsKLSAgICAgICAgbGFuZ3VhZ2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZ3JvdXAudHJhY2tz
LnNpemUoKSk7CisgICAgaWYgKGdyb3VwLmhhc1NyY0xhbmcgJiYgZG9jdW1lbnQoKS0+cGFnZSgp
KSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNrTGFuZ3VhZ2VzOworICAgICAgICB0cmFj
a0xhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdyb3VwLnRyYWNrcy5zaXplKCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdyb3VwLnRyYWNrcy5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgU3RyaW5nIHNyY0xhbmd1YWdlID0gZ3JvdXAudHJhY2tzW2ldLT5sYW5n
dWFnZSgpOwogICAgICAgICAgICAgaWYgKHNyY0xhbmd1YWdlLmxlbmd0aCgpKQotICAgICAgICAg
ICAgICAgIGxhbmd1YWdlcy5hcHBlbmQoc3JjTGFuZ3VhZ2UpOworICAgICAgICAgICAgICAgIHRy
YWNrTGFuZ3VhZ2VzLmFwcGVuZChzcmNMYW5ndWFnZSk7CiAgICAgICAgIH0KLSAgICAgICAgYmVz
dE1hdGNoaW5nTGFuZ3VhZ2UgPSBwcmVmZXJyZWRMYW5ndWFnZUZyb21MaXN0KGxhbmd1YWdlcyk7
CisgICAgICAgIGJlc3RNYXRjaGluZ0xhbmd1YWdlID0gcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlz
dCh0cmFja0xhbmd1YWdlcywgZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpLT5wcmVmZXJyZWRMYW5ndWFnZXMoKSk7CiAgICAgfQogCiAgICAgLy8gRmlyc3Qs
IGZpbmQgdGhlIHRyYWNrIGluIHRoZSBncm91cCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIChpZiBh
bnkpLgpAQCAtMzA4NSwxMCArMzA4NSwxNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2ds
ZVRyYWNrQXRJbmRlCiAgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlzdC0+bGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6IDA7CisgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNl
cykKKyAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRVc2VyUHJlZmVyc0NhcHRpb25zKGlu
ZGV4ICE9IHRleHRUcmFja3NPZmZJbmRleCgpKTsKKwogICAgIGZvciAoaW50IGkgPSAwLCBsZW5n
dGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgVGV4
dFRyYWNrKiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKLSAgICAgICAgaWYgKGkgPT0gaW5k
ZXgpCisgICAgICAgIGlmIChpID09IGluZGV4KSB7CiAgICAgICAgICAgICB0cmFjay0+c2V0TW9k
ZShUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpOworICAgICAgICAgICAgaWYgKGNhcHRpb25Q
cmVmZXJlbmNlcyAmJiB0cmFjay0+bGFuZ3VhZ2UoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgICAg
ICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFByZWZlcnJlZExhbmd1YWdlKHRyYWNrLT5sYW5ndWFn
ZSgpKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChleGNsdXNpdmUgfHwgaW5kZXggPT0g
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc09mZkluZGV4KCkpCiAgICAgICAgICAgICB0cmFj
ay0+c2V0TW9kZShUZXh0VHJhY2s6OmRpc2FibGVkS2V5d29yZCgpKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0Miw5ICs3NDIsNiBAQCB2
b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0CiB7CiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgbW9kaWZpZXIga2V5IGZvciBleGNsdXNpdml0
eSBvdmVycmlkZS4KLSAgICAgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDMzNjEKLQogICAg
ICAgICBOb2RlKiB0YXJnZXQgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwogICAgICAgICBp
ZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMzI5LDcgKzEzMjYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lCiAgICAgZmxvYXQgc21hbGxlc3REaW1lbnNpb24gPSBzdGQ6Om1pbihtX3ZpZGVv
RGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLndp
ZHRoKCkpOwogCiAgICAgYm9vbCBpbXBvcnRhbnQ7Ci0gICAgZmxvYXQgZm9udFNpemUgPSBzbWFs
bGVzdERpbWVuc2lvbiAqIChkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvbkZvbnRT
aXplU2NhbGUoaW1wb3J0YW50KSk7CisgICAgZmxvYXQgZm9udFNpemUgPSBzbWFsbGVzdERpbWVu
c2lvbiAqIChkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkt
PmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCkpOwogICAgIGlmIChmb250U2l6ZSAhPSBt
X2ZvbnRTaXplKSB7CiAgICAgICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKICAgICAgICAgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihm
b250U2l6ZSkgKyAicHgiLCBpbXBvcnRhbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCShyZXZpc2lvbiAxNDI0MTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDAsNiArNTAwLDEyIEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpj
bG9zZWRDYXB0aW9uVHIKIHsKICAgICBpZiAobV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCkKICAg
ICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC0+cmVzZXRUcmFja0xpc3RNZW51KCk7Cisg
ICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pIHsKKyAgICAgICAgaWYgKG1fbWVk
aWFDb250cm9sbGVyLT5oYXNDbG9zZWRDYXB0aW9ucygpKQorICAgICAgICAgICAgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi0+c2hvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CisgICAgfQogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNp
b24gMTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE2ICs1MCwyMiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4gY3JlYXRlKFBhZ2VHcm91cCogZ3Jv
dXApIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDYXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKSk7
IH0KICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCkgeyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV90ZXN0aW5nTW9kZSA/IG1fdXNlclByZWZlcnNDYXB0aW9ucyA6IGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKSB7IG1f
dXNlclByZWZlcnNDYXB0aW9ucyA9IHByZWZlcmVuY2U7IH0KICAgICB2aXJ0dWFsIGZsb2F0IGNh
cHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkgY29uc3QgeyBpbXBvcnRhbnQgPSBm
YWxzZTsgcmV0dXJuIDAuMDVmOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNo
ZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9y
UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0
ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZykgY29uc3QgeyB9Ci0g
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCB7IHJl
dHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcgbGFuZ3VhZ2UpIHsgbV91c2VyUHJlZmVycmVk
TGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVy
cmVkTGFuZ3VhZ2VzKCkgY29uc3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1
YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICAgICAgaWYgKG1fdGVzdGluZ01v
ZGUgJiYgIW1fdXNlclByZWZlcnJlZExhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGxh
bmd1YWdlcy5pbnNlcnQoMCwgbV91c2VyUHJlZmVycmVkTGFuZ3VhZ2UpOworICAgICAgICByZXR1
cm4gbGFuZ3VhZ2VzOworICAgIH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9y
VHJhY2soVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKICAgICB7CkBAIC03MCwxMyArNzYsMjQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdHJhY2stPmxhbmd1YWdlKCk7CiAgICAgfQogCisgICAg
dmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0aW5nTW9kZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRUZXN0aW5nTW9kZShib29sIG92ZXJyaWRlKSB7IG1fdGVz
dGluZ01vZGUgPSBvdmVycmlkZTsgfQorCiAgICAgUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSB7IHJl
dHVybiBtX3BhZ2VHcm91cDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcyhQYWdlR3JvdXAqIGdyb3VwKSA6IG1fcGFnZUdyb3VwKGdyb3VwKSB7IH0KKyAgICBDYXB0
aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCogZ3JvdXApCisgICAgICAgIDogbV9wYWdlR3Jv
dXAoZ3JvdXApCisgICAgICAgICwgbV90ZXN0aW5nTW9kZShmYWxzZSkKKyAgICAgICAgLCBtX3Vz
ZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpCisgICAgeworICAgIH0KIAogcHJpdmF0ZToKICAgICBQ
YWdlR3JvdXAqIG1fcGFnZUdyb3VwOworICAgIFN0cmluZyBtX3VzZXJQcmVmZXJyZWRMYW5ndWFn
ZTsKKyAgICBib29sIG1fdGVzdGluZ01vZGU7CisgICAgYm9vbCBtX3VzZXJQcmVmZXJzQ2FwdGlv
bnM7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjLmgJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwx
NSArNDEsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMoKTsKIAogI2lmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICB2
aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzQ2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVy
KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdl
ZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNr
cyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QgT1ZF
UlJJREU7CiAKICAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHJl
dmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6On5DYXB0aW9uVXNlclAKICNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKSBjb25zdAogewotICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFy
eSgpKQorICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5
KCkpCiAgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0Nh
cHRpb25zKCk7CiAKICAgICByZXR1cm4gTUFDYXB0aW9uQXBwZWFyYW5jZUdldFNob3dDYXB0aW9u
cyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJv
b2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlclByZWYKIAogdm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkK
IHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkgeworICAgIGlmICh0ZXN0
aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKICAgICAgICAgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhwcmVmZXJlbmNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMCwxNiArMTIwLDE2IEBAIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNlclAKIAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QKIHsKLSAgICBpZiAoIU1l
ZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVk
aWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpOwogCi0gICAgcmV0dXJuICFNZWRp
YUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIp
Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVu
ZXIpCiB7CiAgICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKLSAgICAgICAg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKKyAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MobGlzdGVuZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNDcsMTAgKzE0NywxMCBAQCB2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyCiAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxp
c3RlbmVycy5hZGQobGlzdGVuZXIpOwogfQogCi12b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3Mo
Q2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBpZiAo
IU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkgewotICAgICAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhs
aXN0ZW5lcik7CisgICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVucmVnaXN0ZXJGb3JQ
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MobGlzdGVuZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OmNhcHRpbwogCiBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNT
dHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdAogewotICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5
TGlicmFyeSgpKQorICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlM
aWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldDsKQEAgLTQwMyw3ICs0MDMsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6Y2FwdGlvCiAKIGZsb2F0IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNh
cHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkgY29uc3QKIHsKLSAgICBpZiAoIU1l
ZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVk
aWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoaW1wb3J0YW50KTsKIAogICAgIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKQEAgLTQ0Nyw5ICs0NDcsOSBAQCB2b2lkIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVwZGF0ZUNhCiAgICAgICAgICAgICAgVmVjdG9yPFN0
cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxldmVsLCBJbmplY3RJ
bkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
OjpzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcgbGFuZ3VhZ2UpIGNvbnN0Cit2b2lkIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1YWdlKFN0cmluZyBsYW5ndWFn
ZSkKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkgeworICAgIGlmICh0
ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKICAgICAgICAg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UobGFuZ3VhZ2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDU5LDIzICs0NTksMzMgQEAgdm9pZCBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZQogCiBWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWFjOjpwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAogewotICAgIFZlY3Rv
cjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci0g
ICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLQot
ICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQorICAgIGlmICh0ZXN0aW5nTW9k
ZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAorICAgIFZlY3RvcjxT
dHJpbmc+IHBsYXRmb3JtTGFuZ3VhZ2VzID0gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KCk7CisgICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGUgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
T3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
cGxhdGZvcm1MYW5ndWFnZXMuc2l6ZSgpICE9IG92ZXJyaWRlLnNpemUoKSkKKyAgICAgICAgICAg
IHJldHVybiBvdmVycmlkZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdmVycmlk
ZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKG92ZXJyaWRlW2ldICE9IHBsYXRmb3Jt
TGFuZ3VhZ2VzW2ldKQorICAgICAgICAgICAgICAgIHJldHVybiBvdmVycmlkZTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwg
TUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlTZWxlY3RlZExhbmd1YWdlcyhrTUFDYXB0aW9uQXBwZWFy
YW5jZURvbWFpblVzZXIpKTsKICAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0
Q291bnQobGFuZ3VhZ2VzLmdldCgpKTsKIAogICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKICAgICAg
ICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpOwog
Ci0gICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZUNvdW50
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMucmVzZXJ2ZUNhcGFjaXR5KGxhbmd1YWdlQ291bnQgKyBwbGF0Zm9y
bUxhbmd1YWdlcy5zaXplKCkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdl
Q291bnQ7IGkrKykKICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgp
LCBpKSkpOwogCisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5n
dWFnZXMpOworCiAgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiB9CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDMz
ICs0MjgsNiBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBQYWdlR3JvdXA6OmNhcHRpCiAKICAg
ICByZXR1cm4gbV9jYXB0aW9uUHJlZmVyZW5jZXMuZ2V0KCk7CiB9Ci0gICAgCi12b2lkIFBhZ2VH
cm91cDo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCi17Ci0gICAgY2FwdGlvblBy
ZWZlcmVuY2VzKCktPnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNr
cyhsaXN0ZW5lcik7Ci19Ci0KLXZvaWQgUGFnZUdyb3VwOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqIGxpc3RlbmVyKQotewotICAgIGlmICghbV9jYXB0aW9uUHJlZmVyZW5jZXMpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXB0aW9uUHJlZmVyZW5jZXMoKS0+dW5yZWdpc3RlckZvckNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MobGlzdGVuZXIpOwotfQotICAgIAotYm9vbCBQYWdl
R3JvdXA6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKQotewotICAgIHJldHVybiBjYXB0aW9uUHJlZmVy
ZW5jZXMoKS0+dXNlclByZWZlcnNDYXB0aW9ucygpOwotfQotCi1ib29sIFBhZ2VHcm91cDo6dXNl
ckhhc0NhcHRpb25QcmVmZXJlbmNlcygpCi17Ci0gICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNl
cygpLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci19Ci0KLWZsb2F0IFBhZ2VHcm91cDo6Y2FwdGlv
bkZvbnRTaXplU2NhbGUoYm9vbCYgaW1wb3J0YW50KQotewotICAgIHJldHVybiBjYXB0aW9uUHJl
ZmVyZW5jZXMoKS0+Y2FwdGlvbkZvbnRTaXplU2NhbGUoaW1wb3J0YW50KTsKLX0KIAogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAkocmV2aXNpb24gMTQyNDExKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDExICsx
MDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdyb3VwU2V0dGluZ3MqIGdyb3Vw
U2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCk7
Ci0gICAgICAgIGJvb2wgdXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpOwotICAgICAgICBmbG9h
dCBjYXB0aW9uRm9udFNpemVTY2FsZShib29sJik7Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJGb3JD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lciopOwotICAgICAgICB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopOwog
ICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMoKTsKICNl
bmRpZgogCkBAIC0xMjIsNyArMTE3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgYWRkVmlzaXRlZExpbmsoTGlua0hhc2ggc3RyaW5nSGFzaCk7CiAgICAgICAgIHZvaWQg
aW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7Ci0gIAorCiAg
ICAgICAgIFN0cmluZyBtX25hbWU7CiAKICAgICAgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDE0MjQxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM5LDEwICsxMzksOCBAQCBzdGF0aWMgU3RyaW5nIGJlc3RNYXRjaGluZ0xhbmd1YWdlKGNv
bnN0CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVN0cmluZyBwcmVmZXJyZWRMYW5n
dWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QpCitTdHJpbmcg
cHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VM
aXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMpCiB7Ci0gICAgVmVj
dG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygp
OwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgU3RyaW5nIGJlc3RNYXRjaCA9IGJlc3RNYXRjaGluZ0xhbmd1YWdl
KGNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllcihwcmVmZXJyZWRMYW5ndWFnZXNbaV0pLCBsYW5n
dWFnZUxpc3QpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9u
IDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpOwogVmVjdG9y
PFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogVmVjdG9yPFN0cmluZz4gdXNlclBy
ZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CiB2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExh
bmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotU3RyaW5nIHByZWZlcnJlZExhbmd1YWdl
RnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKK1N0cmluZyBwcmVmZXJyZWRMYW5ndWFn
ZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZUxpc3QsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcyk7CiAKIC8vIFRoZSBvYnNlcnZlciBmdW5jdGlv
biB3aWxsIGJlIGNhbGxlZCB3aGVuIHN5c3RlbSBsYW5ndWFnZSBjaGFuZ2VzLgogdHlwZWRlZiB2
b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKSh2b2lkKiBjb250ZXh0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDYgKzEzMiwxMSBAQAogI2luY2x1ZGUgIk1vY2tDRE0uaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKKyNp
bmNsdWRlICJQYWdlR3JvdXAuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
ZiBFTkFCTEUoUEFHRV9QT1BVUCkKQEAgLTI1NCwxMSArMjU5LDE4IEBAIHZvaWQgSW50ZXJuYWxz
OjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFAKICAgICBpZiAocGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpKQogICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFByb2ZpbGVy
RW5hYmxlZChmYWxzZSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgcGFn
ZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOwor
I2VuZGlmCiB9CiAKIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGRvY3VtZW50KQogeworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAg
ICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0VGVz
dGluZ01vZGUodHJ1ZSk7CisjZW5kaWYKIH0KIAogRG9jdW1lbnQqIEludGVybmFsczo6Y29udGV4
dERvY3VtZW50KCkgY29uc3QKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjQ5MSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTEx
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNd
IFRyYWNrIGxhbmd1YWdlIHNlbGVjdGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVz
ZXItcHJlZmVyZW5jZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTExICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIEVGTCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACitUZXN0IHRyYWNrIHVz
ZXIgcHJlZmVyZW5jZXMuCisKKworU2V0IHVzZXIgbGFuZ3VhZ2VzIHRvOiBbJ25vJywgJ2VzLUVT
JywgJ2VuJywgJ2ZyJ10uCisKK1Rlc3QgMTogdHJhY2sgc2VsZWN0ZWQgYmVjYXVzZSBvZiAnZGVm
YXVsdCcgYXR0cmlidXRlCistIGNyZWF0aW5nIHRyYWNrcyBmb3I6IFtlbixmcixub10uCitFVkVO
VChsb2FkKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldC5zcmNsYW5nID09ICdmcicpIE9LCitFWFBF
Q1RFRCAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzInKSBPSworCitUZXN0IDI6IHRyYWNr
IHNlbGVjdGVkIGJlY2F1c2Ugb2Ygb3JpZ2luYWwgdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2UKKy0g
Y3JlYXRpbmcgdHJhY2tzIGZvcjogW2ZyLGVuLG5vXS4KK0VWRU5UKGxvYWQpCitFWFBFQ1RFRCAo
ZXZlbnQudGFyZ2V0LnNyY2xhbmcgPT0gJ25vJykgT0sKK0VYUEVDVEVEIChldmVudC50YXJnZXQu
cmVhZHlTdGF0ZSA9PSAnMicpIE9LCisKK1Rlc3QgMzogcHJlZmVycmVkIGxhbmd1YWdlIGNoYW5n
ZWQgYnkgc2VsZWN0aW5nIHRyYWNrIGZyb20gbWVudQorLSBzaG93IGNhcHRpb25zIG1lbnUuCist
IGNsaWNrIG9uIG1lbnUgaXRlbSAyLgorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0ubW9k
ZSA9PSAnc2hvd2luZycpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5sYW5ndWFn
ZSA9PSAnZnInKSBPSworLSBjcmVhdGluZyB0cmFja3MgZm9yOiBbbm8sZnIsZW5dLgorRVZFTlQo
bG9hZCkKK0VYUEVDVEVEIChldmVudC50YXJnZXQuc3JjbGFuZyA9PSAnZnInKSBPSworRVhQRUNU
RUQgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09ICcyJykgT0sKKworVGVzdCA0OiB0dXJuaW5n
IGNhcHRpb25zIG9mZiBmcm9tIG1lbnUgZGlzYWJsZXMgY2FwdGlvbnMKKy0gc2hvdyBjYXB0aW9u
cyBtZW51LgorLSBjbGljayBvbiBtZW51IGl0ZW0gMC4KKy0gY3JlYXRpbmcgdHJhY2tzIGZvcjog
W3J1LGpwLGVuXS4KK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPT0gJ2Rpc2Fi
bGVkJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzFdLm1vZGUgPT0gJ2Rpc2FibGVk
JykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzJdLm1vZGUgPT0gJ2Rpc2FibGVkJykg
T0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
dXNlci1wcmVmZXJlbmNlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDx0aXRsZT5TZWxlY3RpbmcgZnJvbSBhIGxpc3Qgb2YgdHJhY2tzPC90aXRsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWNvbnRyb2xzLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi90cmFja21lbnUtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgICAgICB2YXIgdGltZXIgPSBudWxsOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkTGFuZ3Vh
Z2U7CisgICAgICAgICAgICB2YXIgdGVzdFN0YWdlID0gMDsKKyAgICAgICAgICAgIHZhciBjYXB0
aW9uc0J1dHRvbkNvb3JkaW5hdGVzOworCisgICAgICAgICAgICBmdW5jdGlvbiBzaG93Q2FwdGlv
bk1lbnUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhcHRpb25zQnV0dG9uQ29v
cmRpbmF0ZXMgPSBtZWRpYUNvbnRyb2xzQnV0dG9uQ29vcmRpbmF0ZXModmlkZW8sICJ0b2dnbGUt
Y2xvc2VkLWNhcHRpb25zLWJ1dHRvbiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
LSBzaG93IGNhcHRpb25zIG1lbnUuIik7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oY2FwdGlvbnNCdXR0b25Db29yZGluYXRlc1swXSwgY2FwdGlvbnNCdXR0b25Db29y
ZGluYXRlc1sxXSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgICAgIHRp
bWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMTAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gdHJhY2tNZW51TGlzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdmFyIHRyYWNrTGlzdEVsZW1lbnQgPSBnZXRUcmFja0xpc3RFbGVtZW50KCk7CisgICAg
ICAgICAgICAgICAgaWYgKCF0cmFja0xpc3RFbGVtZW50KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBUcmFjayBsaXN0IHNob3VsZCBoYXZlIGEgPHVs
PiB3aXRoIDxsaT4gY2hpbGRyZW4gKE9uZSBvZiB0aGVtIGlzICJPZmYiKS4KKyAgICAgICAgICAg
ICAgICB2YXIgdHJhY2tMaXN0ID0gdHJhY2tMaXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCJ1bCIp
OworICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0KSB7CisgICAgICAgICAgICAgICAgICAg
IGZhaWxUZXN0KCJDb3VsZCBub3QgZmluZCBhIGNoaWxkIHVsIGVsZW1lbnQgaW4gdHJhY2sgbGlz
dCBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEl0ZW1zID0gdHJhY2tMaXN0LnF1ZXJ5U2Vs
ZWN0b3JBbGwoImxpIik7CisgICAgICAgICAgICAgICAgaWYgKCF0cmFja0xpc3RJdGVtcykgewor
ICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiQ291bGQgbm90IGZpbmQgY2hpbGQgbGkgZWxl
bWVudHMgaW4gdHJhY2sgbGlzdCBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2tMaXN0SXRl
bXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNlbGVjdENhcHRpb25N
ZW51SXRlbShpbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIi0gY2xpY2sgb24gbWVudSBpdGVtICIgKyBpbmRleCArICIuIik7CisgICAgICAgICAgICAg
ICAgdmFyIHRyYWNrTGlzdEl0ZW1zID0gdHJhY2tNZW51TGlzdCgpOworICAgICAgICAgICAgICAg
IHZhciBzZWxlY3RlZFRyYWNrSXRlbSA9IHRyYWNrTGlzdEl0ZW1zW2luZGV4XTsKKyAgICAgICAg
ICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gc2VsZWN0ZWRUcmFja0l0ZW0uZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBib3VuZGluZ1JlY3QubGVmdCAr
IGJvdW5kaW5nUmVjdC53aWR0aCAvIDI7CisgICAgICAgICAgICAgICAgdmFyIHkgPSBib3VuZGlu
Z1JlY3QudG9wICsgYm91bmRpbmdSZWN0LmhlaWdodCAvIDI7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0xvYWRlZCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVChsb2FkKSIpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0LnNyY2xhbmciLCBleHBlY3Rl
ZExhbmd1YWdlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5MT0FERUQpOworCisgICAgICAgICAgICAgICAg
dGltZXIgPSBzZXRUaW1lb3V0KG5leHRTdGVwLCAyMDApOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBjcmVhdGVUcmFja0VsZW1lbnQobGFuZ3VhZ2UsIGlzRGVmYXVsdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2sgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0cmFjaycpOworICAgICAgICAgICAgICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgn
a2luZCcsICJjYXB0aW9ucyIpOworICAgICAgICAgICAgICAgIHRyYWNrLnNyYyA9ICdkYXRhOnRl
eHQvdnR0LCcrZW5jb2RlVVJJQ29tcG9uZW50KCJXRUJWVFRcblxuMDA6MDA6MDAuMDAwIC0tPiAw
MDowMDowMS4wMDBcbkNhcHRpb24gMVxuIik7CisgICAgICAgICAgICAgICAgdHJhY2suc2V0QXR0
cmlidXRlKCdzcmNsYW5nJywgbGFuZ3VhZ2UpOworICAgICAgICAgICAgICAgIHRyYWNrLnNldEF0
dHJpYnV0ZSgnb25sb2FkJywgJ3RyYWNrTG9hZGVkKCknKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXNEZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICB0cmFjay5zZXRBdHRyaWJ1dGUoJ2RlZmF1
bHQnLCAnZGVmYXVsdCcpOworICAgICAgICAgICAgICAgIHZpZGVvLmFwcGVuZENoaWxkKHRyYWNr
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlVHJhY2tFbGVt
ZW50cyhsYW5ndWFnZXMsIGRlZmF1bHRJbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIgdHJhY2tzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHJhY2snKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0cmFja3MubGVuZ3RoOyArK25k
eCkKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucmVtb3ZlQ2hpbGQodHJhY2tzW25keF0pOwor
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCItIGNyZWF0aW5nIHRyYWNrcyBmb3I6IFsi
ICsgbGFuZ3VhZ2VzICsgIl0uIik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsg
bmR4IDwgbGFuZ3VhZ2VzLmxlbmd0aDsgKytuZHgpCisgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVRyYWNrRWxlbWVudChsYW5ndWFnZXNbbmR4XSwgbmR4ID09IGRlZmF1bHRJbmRleCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5leHRTdGVwKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICArK3Rlc3RTdGFnZTsKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KHRlc3RTdGFnZSkgeworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCAxOiB0cmFjayBzZWxlY3RlZCBiZWNhdXNlIG9mICdk
ZWZhdWx0JyBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tFbGVt
ZW50cyhbJ2VuJywgJ2ZyJywgJ25vJ10sIDEpOworICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZExhbmd1YWdlID0gJ2ZyJzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPlRl
c3QgMjogdHJhY2sgc2VsZWN0ZWQgYmVjYXVzZSBvZiBvcmlnaW5hbCB1c2VyIHByZWZlcnJlZCBs
YW5ndWFnZSIpOworICAgICAgICAgICAgICAgICAgICBjcmVhdGVUcmFja0VsZW1lbnRzKFsnZnIn
LCAnZW4nLCAnbm8nXSk7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTGFuZ3VhZ2UgPSAn
bm8nOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Ug
MzoKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCAzOiBwcmVmZXJy
ZWQgbGFuZ3VhZ2UgY2hhbmdlZCBieSBzZWxlY3RpbmcgdHJhY2sgZnJvbSBtZW51Iik7CisgICAg
ICAgICAgICAgICAgICAgIHNob3dDYXB0aW9uTWVudSgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0Q2FwdGlvbk1lbnVJdGVtKDIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSIsICJzaG93aW5nIik7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5sYW5ndWFnZSIsICJmciIpOwor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZExhbmd1YWdlID0gJ2ZyJzsKKyAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50cyhbICdubycsICdmcicsICdlbicsXSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSA1OgorICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5UZXN0IDQ6IHR1cm5pbmcgY2FwdGlvbnMg
b2ZmIGZyb20gbWVudSBkaXNhYmxlcyBjYXB0aW9ucyIpOworICAgICAgICAgICAgICAgICAgICBz
aG93Q2FwdGlvbk1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdENhcHRpb25NZW51SXRl
bSgwKTsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50cyhbICdydScsICdq
cCcsICdlbicsXSk7CisgICAgICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChuZXh0
U3RlcCwgMjUwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IHZp
ZGVvLnRleHRUcmFja3MubGVuZ3RoOyArK25keCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1siICsgbmR4ICsgIl0ubW9kZSIsICJkaXNhYmxl
ZCIpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAg
ICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAg
ICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi9jb250
ZW50L3Rlc3QnKTsKKyAgICAgICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdjYW5w
bGF5dGhyb3VnaCcsIG5leHRTdGVwKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxi
cj5TZXQgdXNlciBsYW5ndWFnZXMgdG86IFsnbm8nLCAnZXMtRVMnLCAnZW4nLCAnZnInXS4iKTsK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhbJ25v
JywgJ2VzLUVTJywgJ2VuJywgJ2ZyJ10pOworICAgICAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8
cD5UZXN0IHRyYWNrIHVzZXIgcHJlZmVyZW5jZXMuPC9wPgorICAgICAgICA8dmlkZW8gd2lkdGg9
IjUwMCIgaGVpZ2h0PSIzMDAiIGNvbnRyb2xzPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187645</attachid>
            <date>2013-02-11 13:05:11 -0800</date>
            <delta_ts>2013-02-11 13:35:50 -0800</delta_ts>
            <desc>Updated: add missing export to autotools/symbols.filter</desc>
            <filename>patch_9.txt</filename>
            <type>text/plain</type>
            <size>34915</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjQ5
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAy
LTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtN
YWNdIFRyYWNrIGxhbmd1YWdlIHNlbGVjdGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6IEV4cG9ydCBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcy4KKwog
MjAxMy0wMi0xMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgKiBTb3VyY2UvV2ViQ29yZTogTW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZSwgYWRkaW5n
IEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDI0OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4
MiBAQAorMjAxMy0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSBUcmFjayBsYW5ndWFnZSBzZWxlY3Rpb24gc2hvdWxkIGJlIHN0aWNr
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hvb3Np
bmcgYSB0ZXh0IHRyYWNrIGZyb20gdGhlIGNhcHRpb24gbWVudSBzaG91bGQgbWFrZSB0aGF0IHRy
YWNrJ3MgbGFuZ3VhZ2UgdGhlCisgICAgICAgIHByZWZlcnJlZCBjYXB0aW9uIGxhbmd1YWdlLiBU
dXJuaW5nIGNhcHRpb25zIG9mZiBmcm9tIHRoZSBtZW51IHNob3VsZCBkaXNhYmxlIGNhcHRpb25z
CisgICAgICAgIGluIHZpZGVvcyBsb2FkZWQgc3Vic2VxdWVudGx5LgorCisgICAgICAgIE9TIFgg
aGFzIHN5c3RlbSBzdXBwb3J0IGZvciB0aGVzZSBzZXR0aW5ncywgc28gY2hhbmdlcyBtYWRlIGJ5
IERSVCBzaG91bGQgbm90IGNoYW5nZSB0aGUKKyAgICAgICAgc2V0dGluZ3Mgb24gdGhlIHVzZXIn
cyBzeXN0ZW0uIEFkZCBzdXBwb3J0IGZvciBhbGwgb3RoZXIgcG9ydHMgaW4gRFJUIG9ubHkuCisK
KyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IFBhZ2VHcm91cDo6Y2FwdGlvblByZWZl
cmVuY2VzKCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IFVzZSBwYWdl
KCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRhY2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmRldGFjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrR3JvdXApOiBEaXR0by4gVXBkYXRlIGZv
ciAKKyAgICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QgY2hhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KTogU2V0IHVz
ZXIgcHJlZnMgZm9yIGNhcHRpb25zIHZpc2libGUgYW5kCisgICAgICAgICAgICBjYXB0aW9uIGxh
bmd1YWdlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogUmVtb3ZlIHVubmVl
ZGVkIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcyk6ICBVc2UgcGFnZSgpLT5ncm91cCgpLmNhcHRpb25Q
cmVmZXJlbmNlcygpLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6Y2xvc2VkQ2FwdGlv
blRyYWNrc0NoYW5nZWQpOiBVcGRhdGUgY2FwdGlvbiBtZW51IGJ1dHRvbiB2aXNpYmlsaXR5Lgor
CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogU3VwcG9y
dCAidGVzdGluZyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJh
Y2tzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1
bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRQcmVmZXJyZWRMYW5ndWFnZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVy
cmVkTGFuZ3VhZ2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjp0ZXN0aW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6c2V0VGVzdGluZ01vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBEaXR0by4K
KworICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oOgorICAgICAgICAq
IHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBTdXBwb3J0ICJ0
ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVnaXN0ZXJG
b3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBDaGFuZ2UgbmFtZSBmcm9tCisgICAgICAg
ICAgICByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MuIFN1cHBv
cnQgInRlc3RpbmciIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjp1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogIENoYW5n
ZSBuYW1lIGZyb20KKyAgICAgICAgICAgIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzLiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUp
OiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1YWdlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpwcmVm
ZXJyZWRMYW5ndWFnZXMpOiBEaXR0by4gUmV0dXJuIHRoZSBwbGF0Zm9ybSBvdmVycmlkZSB3aGVu
IHNldC4KKworICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KTogUmVtb3ZlIGJlY2F1c2UgaXQgaXMgYWxyZWFkeQorICAgICAgICAgICAgYXZhaWxhYmxlIGZy
b20gdGhlIGNhcHRpb24gcHJlZmVyZW5jZSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpQYWdl
R3JvdXA6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJQcmVmZXJzQ2FwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6dXNlckhhc0NhcHRpb25QcmVm
ZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9uRm9u
dFNpemVTY2FsZSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KTogVGFrZSB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGlu
c3RlYWQgb2YgYXNzdW1pbmcKKyAgICAgICAgICAgIHRoZSBzeXN0ZW0gbGlzdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTog
RGlzYWJsZSBjYXB0aW9uIHRlc3RpbmcgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6SW50ZXJuYWxzKTogRW5hYmxlIGNhcHRpb24gdGVzdGluZyBtb2RlIHNvIHRoZSB1c2VyJ3Mg
c3lzdGVtCisgICAgICAgICAgICBwcmVmZXJlbmNlcyBhcmUgbm90IG1vZGlmaWVkLgorCiAyMDEz
LTAyLTExICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVGltZWxpbmU6IGludmFsaWRhdGUgYW5kIGZvcmNlIGxvY2F0aW9ucyBh
cmUgc2FtZSBmb3IgTGF5b3V0IHJlY29yZHMgY2F1c2VkIGJ5IHN0eWxlIHJlY2FsY3VsYWl0b24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjc3MiwzICsyNzcyLDcgQEAg
X19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjVhcgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCiBfX1pON1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZO
M1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMx
XzZTdHJpbmdFRQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdgorI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNyw5ICszMTcsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpIHsK
LSAgICAgICAgUGFnZUdyb3VwJiBncm91cCA9IGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCk7Ci0g
ICAgICAgIGlmIChncm91cC51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCi0gICAgICAgICAg
ICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7CisgICAg
ICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50
LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CisgICAgICAgIGlmIChjYXB0
aW9uUHJlZmVyZW5jZXMtPnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAg
IG1fZGlzYWJsZUNhcHRpb25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNDYXB0
aW9ucygpOwogICAgIH0KICNlbmRpZgogfQpAQCAtNTkxLDcgKzU5MSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6YXR0YWNoKCkKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCku
cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnJl
Z2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCiB9CiAK
QEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRldGFjaCgpCiB7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS51bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT51bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCiAgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgp
OwogfQpAQCAtMjk5Miw4ICsyOTkyLDggQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJl
ZmVyc0NhcHRpbwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
UGFnZUdyb3VwJiBncm91cCA9IHBhZ2UtPmdyb3VwKCk7Ci0gICAgcmV0dXJuIGdyb3VwLnVzZXJI
YXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7Cisg
ICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gcGFnZS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2Vz
LT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT51c2Vy
UHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50
ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29uc3QKQEAgLTMwMTksMTUgKzMw
MTksMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAgIEFT
U0VSVChncm91cC50cmFja3Muc2l6ZSgpKTsKIAogICAgIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5n
dWFnZTsKLSAgICBpZiAoZ3JvdXAuaGFzU3JjTGFuZykgewotICAgICAgICBWZWN0b3I8U3RyaW5n
PiBsYW5ndWFnZXM7Ci0gICAgICAgIGxhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdy
b3VwLnRyYWNrcy5zaXplKCkpOworICAgIGlmIChncm91cC5oYXNTcmNMYW5nICYmIGRvY3VtZW50
KCktPnBhZ2UoKSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0cmFja0xhbmd1YWdlczsKKyAg
ICAgICAgdHJhY2tMYW5ndWFnZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShncm91cC50cmFja3Mu
c2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncm91cC50cmFja3Muc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyBzcmNMYW5ndWFnZSA9IGdyb3VwLnRyYWNr
c1tpXS0+bGFuZ3VhZ2UoKTsKICAgICAgICAgICAgIGlmIChzcmNMYW5ndWFnZS5sZW5ndGgoKSkK
LSAgICAgICAgICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKHNyY0xhbmd1YWdlKTsKKyAgICAgICAg
ICAgICAgICB0cmFja0xhbmd1YWdlcy5hcHBlbmQoc3JjTGFuZ3VhZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIGJlc3RNYXRjaGluZ0xhbmd1YWdlID0gcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChs
YW5ndWFnZXMpOworICAgICAgICBiZXN0TWF0Y2hpbmdMYW5ndWFnZSA9IHByZWZlcnJlZExhbmd1
YWdlRnJvbUxpc3QodHJhY2tMYW5ndWFnZXMsIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKS0+cHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwogICAgIH0KIAogICAg
IC8vIEZpcnN0LCBmaW5kIHRoZSB0cmFjayBpbiB0aGUgZ3JvdXAgdGhhdCBzaG91bGQgYmUgZW5h
YmxlZCAoaWYgYW55KS4KQEAgLTMwODUsMTAgKzMwODUsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVUcmFja0F0SW5kZQogICAgIGlmICghdHJhY2tMaXN0IHx8ICF0cmFja0xpc3Qt
Pmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
KiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5w
YWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkgOiAwOworICAgIGlmIChjYXB0aW9u
UHJlZmVyZW5jZXMpCisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNlclByZWZlcnND
YXB0aW9ucyhpbmRleCAhPSB0ZXh0VHJhY2tzT2ZmSW5kZXgoKSk7CisKICAgICBmb3IgKGludCBp
ID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CiAg
ICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAgICAgIGlm
IChpID09IGluZGV4KQorICAgICAgICBpZiAoaSA9PSBpbmRleCkgewogICAgICAgICAgICAgdHJh
Y2stPnNldE1vZGUoVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKTsKKyAgICAgICAgICAgIGlm
IChjYXB0aW9uUHJlZmVyZW5jZXMgJiYgdHJhY2stPmxhbmd1YWdlKCkubGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRQcmVmZXJyZWRMYW5ndWFnZSh0cmFj
ay0+bGFuZ3VhZ2UoKSk7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZXhjbHVzaXZlIHx8
IGluZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NPZmZJbmRleCgpKQogICAgICAg
ICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKSk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDIsOSAr
NzQyLDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdAogewogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCkgewotICAgICAgICAvLyBGSVhNRTogQWRkIG1vZGlmaWVyIGtleSBmb3Ig
ZXhjbHVzaXZpdHkgb3ZlcnJpZGUuCi0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAz
MzYxCi0KICAgICAgICAgTm9kZSogdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsK
ICAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyOSw3ICsxMzI2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZQogICAgIGZsb2F0IHNtYWxsZXN0RGltZW5zaW9uID0gc3RkOjpt
aW4obV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSwgbV92aWRlb0Rpc3BsYXlTaXpl
LnNpemUoKS53aWR0aCgpKTsKIAogICAgIGJvb2wgaW1wb3J0YW50OwotICAgIGZsb2F0IGZvbnRT
aXplID0gc21hbGxlc3REaW1lbnNpb24gKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNh
cHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCkpOworICAgIGZsb2F0IGZvbnRTaXplID0gc21h
bGxlc3REaW1lbnNpb24gKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpLT5jYXB0aW9uRm9udFNpemVTY2FsZShpbXBvcnRhbnQpKTsKICAgICBpZiAoZm9u
dFNpemUgIT0gbV9mb250U2l6ZSkgewogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5n
OjpudW1iZXIoZm9udFNpemUpICsgInB4IiwgaW1wb3J0YW50KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAkocmV2aXNpb24g
MTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwLDYgKzUwMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJv
bHNBcHBsZTo6Y2xvc2VkQ2FwdGlvblRyCiB7CiAgICAgaWYgKG1fY2xvc2VkQ2FwdGlvbnNUcmFj
a0xpc3QpCiAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnJlc2V0VHJhY2tMaXN0
TWVudSgpOworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7CisgICAgICAg
IGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAgIH0KIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNiArNTAsMjIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IGNyZWF0ZShQYWdl
R3JvdXAqIGdyb3VwKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cyhncm91cCkpOyB9CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpIHsgfQog
Ci0gICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGUgPyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgOiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVy
ZW5jZSkgeyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgPSBwcmVmZXJlbmNlOyB9CiAgICAgdmlydHVh
bCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0IHsgaW1w
b3J0YW50ID0gZmFsc2U7IHJldHVybiAwLjA1ZjsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvclByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIGNv
bnN0IHsgfQotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkg
Y29uc3QgeyByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSB7IG1fdXNl
clByZWZlcnJlZExhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBsYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgICAgIGlmICht
X3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBsYW5ndWFnZXMuaW5zZXJ0KDAsIG1fdXNlclByZWZlcnJlZExhbmd1YWdlKTsKKyAg
ICAgICAgcmV0dXJuIGxhbmd1YWdlczsKKyAgICB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNw
bGF5TmFtZUZvclRyYWNrKFRleHRUcmFjayogdHJhY2spIGNvbnN0CiAgICAgewpAQCAtNzAsMTMg
Kzc2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRyYWNrLT5sYW5ndWFnZSgpOwogICAg
IH0KIAorICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVz
dGluZ01vZGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlk
ZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7IH0KKwogICAgIFBhZ2VHcm91cCogcGFnZUdy
b3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogcHJvdGVjdGVkOgotICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkgOiBtX3BhZ2VHcm91cChncm91cCkgeyB9
CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAqIGdyb3VwKQorICAgICAgICA6
IG1fcGFnZUdyb3VwKGdyb3VwKQorICAgICAgICAsIG1fdGVzdGluZ01vZGUoZmFsc2UpCisgICAg
ICAgICwgbV91c2VyUHJlZmVyc0NhcHRpb25zKGZhbHNlKQorICAgIHsKKyAgICB9CiAKIHByaXZh
dGU6CiAgICAgUGFnZUdyb3VwKiBtX3BhZ2VHcm91cDsKKyAgICBTdHJpbmcgbV91c2VyUHJlZmVy
cmVkTGFuZ3VhZ2U7CisgICAgYm9vbCBtX3Rlc3RpbmdNb2RlOworICAgIGJvb2wgbV91c2VyUHJl
ZmVyc0NhcHRpb25zOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsMTUgKzQxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjKCk7CiAKICNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29s
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JQcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjLm1tCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp+Q2FwdGlvblVzZXJQCiAjaWYgTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJp
bGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmls
aXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNl
clByZWZlcnNDYXB0aW9ucygpOwogCiAgICAgcmV0dXJuIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
aG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKTsKQEAgLTExMCw3ICsx
MTAsNyBAQCBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmCiAKIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHBy
ZWZlcmVuY2UpCiB7Ci0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKKyAg
ICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7CiAg
ICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMocHJl
ZmVyZW5jZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjAsMTYgKzEyMCwxNiBAQCB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFVzZXJQCiAKIGJvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKIAotICAgIHJl
dHVybiAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpOworICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
IGxpc3RlbmVyKQordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvclBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqIGxpc3RlbmVyKQogewogICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7
Ci0gICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7CisgICAgICAgIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ3LDEwICsxNDcsMTAgQEAgdm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlcgogICAgIG1fY2FwdGlvblByZWZlcmVu
Y2VDaGFuZ2VMaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQordm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCiB7
CiAgICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKLSAgICAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3MobGlzdGVuZXIpOworICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1bnJl
Z2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW8KIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNj
ZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nl
c3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQ7CkBAIC00MDMsNyArNDAzLDcgQEAgU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7CiAKICAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CkBAIC00NDcsOSArNDQ3LDkg
QEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1cGRhdGVDYQogICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZl
bCwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKLXZvaWQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSBjb25zdAor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJp
bmcgbGFuZ3VhZ2UpCiB7Ci0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsK
KyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7
CiAgICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKGxh
bmd1YWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1OSwyMyArNDU5LDMzIEBAIHZv
aWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0UHJlZmUKIAogVmVjdG9yPFN0cmluZz4g
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKIHsK
LSAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZSA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpOwotICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gb3Zl
cnJpZGU7Ci0KLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAo
dGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICBy
ZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKKyAg
ICBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybUxhbmd1YWdlcyA9IHBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJl
ZExhbmd1YWdlc092ZXJyaWRlKCk7CisgICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgaWYgKHBsYXRmb3JtTGFuZ3VhZ2VzLnNpemUoKSAhPSBvdmVycmlkZS5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3ZlcnJpZGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChvdmVycmlkZVtpXSAh
PSBwbGF0Zm9ybUxhbmd1YWdlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGU7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2Vz
KEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKSk7CiAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CiAKICAgICBpZiAoIWxhbmd1YWdlQ291
bnQpCiAgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5n
dWFnZXMoKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFu
Z3VhZ2VDb3VudCk7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
KyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLnJlc2VydmVDYXBhY2l0eShsYW5ndWFnZUNvdW50
ICsgcGxhdGZvcm1MYW5ndWFnZXMuc2l6ZSgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBw
ZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1
YWdlcy5nZXQoKSwgaSkpKTsKIAorICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBs
YXRmb3JtTGFuZ3VhZ2VzKTsKKwogICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxNDI0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyOCwzMyArNDI4LDYgQEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogUGFnZUdyb3VwOjpj
YXB0aQogCiAgICAgcmV0dXJuIG1fY2FwdGlvblByZWZlcmVuY2VzLmdldCgpOwogfQotICAgIAot
dm9pZCBQYWdlR3JvdXA6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAg
IGNhcHRpb25QcmVmZXJlbmNlcygpLT5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MobGlzdGVuZXIpOwotfQotCi12b2lkIFBhZ2VHcm91cDo6dW5yZWdpc3RlckZv
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2Vz
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FwdGlvblByZWZlcmVuY2VzKCktPnVucmVnaXN0ZXJG
b3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKLX0KLSAgICAK
LWJvb2wgUGFnZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkKLXsKLSAgICByZXR1cm4gY2Fw
dGlvblByZWZlcmVuY2VzKCktPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKLX0KLQotYm9vbCBQYWdl
R3JvdXA6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKQotewotICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMoKS0+dXNlclByZWZlcnNDYXB0aW9ucygpOwotfQotCi1mbG9hdCBQYWdlR3Jv
dXA6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkKLXsKLSAgICByZXR1cm4g
Y2FwdGlvblByZWZlcmVuY2VzKCktPmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7Ci19
CiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9uIDE0MjQx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSwxMSArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHcm91cFNldHRp
bmdzKiBncm91cFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cFNldHRpbmdzLmdldCgp
OyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIGJvb2wgdXNlclByZWZlcnND
YXB0aW9ucygpOwotICAgICAgICBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAg
ICAgICAgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYpOwotICAgICAgICB2b2lkIHJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKLSAgICAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIqKTsKICAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVu
Y2VzKCk7CiAjZW5kaWYKIApAQCAtMTIyLDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIHN0cmluZ0hhc2gpOwogICAg
ICAgICB2b2lkIGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygp
OwotICAKKwogICAgICAgICBTdHJpbmcgbV9uYW1lOwogCiAgICAgICAgIEhhc2hTZXQ8UGFnZSo+
IG1fcGFnZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lv
biAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMCArMTM5LDggQEAgc3RhdGljIFN0cmluZyBiZXN0TWF0Y2hpbmdM
YW5ndWFnZShjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1TdHJpbmcgcHJl
ZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0
KQorU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxhbmd1YWdlTGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKQog
ewotICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkTGFuZ3Vh
Z2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBiZXN0TWF0Y2ggPSBiZXN0TWF0Y2hp
bmdMYW5ndWFnZShjYW5vbmljYWxMYW5ndWFnZUlkZW50aWZpZXIocHJlZmVycmVkTGFuZ3VhZ2Vz
W2ldKSwgbGFuZ3VhZ2VMaXN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2Uo
KTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIFZlY3RvcjxTdHJp
bmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLVN0cmluZyBwcmVmZXJy
ZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CitTdHJpbmcgcHJlZmVy
cmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMpOwogCiAvLyBUaGUgb2JzZXJ2
ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBzeXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcy4K
IHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbikodm9pZCogY29u
dGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAx
NDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw2ICsxMzIsMTEgQEAKICNpbmNsdWRlICJNb2NrQ0RNLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCkBAIC0yNTQsMTEgKzI1OSwxOCBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQCiAgICAgaWYgKHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSkKICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnNldFRlc3RpbmdNb2Rl
KGZhbHNlKTsKKyNlbmRpZgogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVudCkKIHsKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5wYWdl
KCkpCisgICAgICAgIGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2Vz
KCktPnNldFRlc3RpbmdNb2RlKHRydWUpOworI2VuZGlmCiB9CiAKIERvY3VtZW50KiBJbnRlcm5h
bHM6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJ
KHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHdv
cmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsNyBAQCBfWk42V2ViS2l0MjJXZWJHdGtFeHRlbnNp
b25NYW5hZ2VyNnNoYXJlCiBfWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDExaXNVbmRlclRlc3RFdjsKIF9aTjdXZWJDb3JlN0VsZW1lbnQxNmNyZWF0ZVNoYWRvd1Jvb3RF
Umk7CiBfWk5LN1dlYkNvcmU0S1VSTDZzdHJpbmdFdjsKK19aTjdXZWJDb3JlOVBhZ2VHcm91cDE4
Y2FwdGlvblByZWZlcmVuY2VzRXYKIAogbG9jYWw6CiBfWio7CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDI0OTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMy0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWFjXSBUcmFjayBsYW5ndWFnZSBzZWxlY3Rpb24gc2hvdWxkIGJlIHN0
aWNreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
ZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sOiBBZGRlZC4K
KwogMjAxMy0wMi0xMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NyBAQAorVGVzdCB0cmFjayB1c2VyIHByZWZlcmVuY2VzLgorCisKK1NldCB1c2VyIGxhbmd1YWdl
cyB0bzogWydubycsICdlcy1FUycsICdlbicsICdmciddLgorCitUZXN0IDE6IHRyYWNrIHNlbGVj
dGVkIGJlY2F1c2Ugb2YgJ2RlZmF1bHQnIGF0dHJpYnV0ZQorLSBjcmVhdGluZyB0cmFja3MgZm9y
OiBbZW4sZnIsbm9dLgorRVZFTlQobG9hZCkKK0VYUEVDVEVEIChldmVudC50YXJnZXQuc3JjbGFu
ZyA9PSAnZnInKSBPSworRVhQRUNURUQgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09ICcyJykg
T0sKKworVGVzdCAyOiB0cmFjayBzZWxlY3RlZCBiZWNhdXNlIG9mIG9yaWdpbmFsIHVzZXIgcHJl
ZmVycmVkIGxhbmd1YWdlCistIGNyZWF0aW5nIHRyYWNrcyBmb3I6IFtmcixlbixub10uCitFVkVO
VChsb2FkKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldC5zcmNsYW5nID09ICdubycpIE9LCitFWFBF
Q1RFRCAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzInKSBPSworCitUZXN0IDM6IHByZWZl
cnJlZCBsYW5ndWFnZSBjaGFuZ2VkIGJ5IHNlbGVjdGluZyB0cmFjayBmcm9tIG1lbnUKKy0gc2hv
dyBjYXB0aW9ucyBtZW51LgorLSBjbGljayBvbiBtZW51IGl0ZW0gMi4KK0VYUEVDVEVEICh2aWRl
by50ZXh0VHJhY2tzWzBdLm1vZGUgPT0gJ3Nob3dpbmcnKSBPSworRVhQRUNURUQgKHZpZGVvLnRl
eHRUcmFja3NbMF0ubGFuZ3VhZ2UgPT0gJ2ZyJykgT0sKKy0gY3JlYXRpbmcgdHJhY2tzIGZvcjog
W25vLGZyLGVuXS4KK0VWRU5UKGxvYWQpCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnNyY2xhbmcg
PT0gJ2ZyJykgT0sKK0VYUEVDVEVEIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnMicpIE9L
CisKK1Rlc3QgNDogdHVybmluZyBjYXB0aW9ucyBvZmYgZnJvbSBtZW51IGRpc2FibGVzIGNhcHRp
b25zCistIHNob3cgY2FwdGlvbnMgbWVudS4KKy0gY2xpY2sgb24gbWVudSBpdGVtIDAuCistIGNy
ZWF0aW5nIHRyYWNrcyBmb3I6IFtydSxqcCxlbl0uCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNr
c1swXS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1sx
XS5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1syXS5t
b2RlID09ICdkaXNhYmxlZCcpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2Vz
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+U2VsZWN0aW5nIGZyb20gYSBsaXN0IG9m
IHRyYWNrczwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1jb250cm9scy5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vdHJhY2ttZW51LXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHRpbWVyID0gbnVsbDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZExhbmd1YWdlOworICAgICAgICAgICAgdmFyIHRlc3RTdGFnZSA9IDA7Cisg
ICAgICAgICAgICB2YXIgY2FwdGlvbnNCdXR0b25Db29yZGluYXRlczsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gc2hvd0NhcHRpb25NZW51KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXB0aW9uc0J1dHRvbkNvb3JkaW5hdGVzID0gbWVkaWFDb250cm9sc0J1dHRvbkNvb3JkaW5h
dGVzKHZpZGVvLCAidG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24iKTsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIi0gc2hvdyBjYXB0aW9ucyBtZW51LiIpOworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXNbMF0s
IGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXNbMV0pOworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQobmV4dFN0ZXAsIDEwMCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrTWVudUxpc3QoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RFbGVtZW50ID0gZ2V0VHJhY2tM
aXN0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0RWxlbWVudCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgLy8gVHJhY2sgbGlz
dCBzaG91bGQgaGF2ZSBhIDx1bD4gd2l0aCA8bGk+IGNoaWxkcmVuIChPbmUgb2YgdGhlbSBpcyAi
T2ZmIikuCisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdCA9IHRyYWNrTGlzdEVsZW1lbnQu
cXVlcnlTZWxlY3RvcigidWwiKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYWNrTGlzdCkgewor
ICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiQ291bGQgbm90IGZpbmQgYSBjaGlsZCB1bCBl
bGVtZW50IGluIHRyYWNrIGxpc3QgbWVudSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RJdGVtcyA9
IHRyYWNrTGlzdC5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpOworICAgICAgICAgICAgICAgIGlmICgh
dHJhY2tMaXN0SXRlbXMpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkNvdWxkIG5v
dCBmaW5kIGNoaWxkIGxpIGVsZW1lbnRzIGluIHRyYWNrIGxpc3QgbWVudSIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRyYWNrTGlzdEl0ZW1zOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oaW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCItIGNsaWNrIG9uIG1lbnUgaXRlbSAiICsgaW5kZXggKyAi
LiIpOworICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3RJdGVtcyA9IHRyYWNrTWVudUxpc3Qo
KTsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRUcmFja0l0ZW0gPSB0cmFja0xpc3RJdGVt
c1tpbmRleF07CisgICAgICAgICAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IHNlbGVjdGVkVHJh
Y2tJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgICAgIHZhciB4ID0g
Ym91bmRpbmdSZWN0LmxlZnQgKyBib3VuZGluZ1JlY3Qud2lkdGggLyAyOworICAgICAgICAgICAg
ICAgIHZhciB5ID0gYm91bmRpbmdSZWN0LnRvcCArIGJvdW5kaW5nUmVjdC5oZWlnaHQgLyAyOwor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdHJh
Y2tMb2FkZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
RVZFTlQobG9hZCkiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50LnRhcmdl
dC5zcmNsYW5nIiwgZXhwZWN0ZWRMYW5ndWFnZSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJldmVudC50YXJnZXQucmVhZHlTdGF0ZSIsIEhUTUxUcmFja0VsZW1lbnQuTE9BREVEKTsK
KworICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMjAwKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlVHJhY2tFbGVtZW50KGxh
bmd1YWdlLCBpc0RlZmF1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHRy
YWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHJhY2snKTsKKyAgICAgICAgICAgICAgICB0
cmFjay5zZXRBdHRyaWJ1dGUoJ2tpbmQnLCAiY2FwdGlvbnMiKTsKKyAgICAgICAgICAgICAgICB0
cmFjay5zcmMgPSAnZGF0YTp0ZXh0L3Z0dCwnK2VuY29kZVVSSUNvbXBvbmVudCgiV0VCVlRUXG5c
bjAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDEuMDAwXG5DYXB0aW9uIDFcbiIpOworICAgICAgICAg
ICAgICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgnc3JjbGFuZycsIGxhbmd1YWdlKTsKKyAgICAgICAg
ICAgICAgICB0cmFjay5zZXRBdHRyaWJ1dGUoJ29ubG9hZCcsICd0cmFja0xvYWRlZCgpJyk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzRGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgdHJhY2su
c2V0QXR0cmlidXRlKCdkZWZhdWx0JywgJ2RlZmF1bHQnKTsKKyAgICAgICAgICAgICAgICB2aWRl
by5hcHBlbmRDaGlsZCh0cmFjayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGNyZWF0ZVRyYWNrRWxlbWVudHMobGFuZ3VhZ2VzLCBkZWZhdWx0SW5kZXgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJ3RyYWNrJyk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwg
dHJhY2tzLmxlbmd0aDsgKytuZHgpCisgICAgICAgICAgICAgICAgICAgIHZpZGVvLnJlbW92ZUNo
aWxkKHRyYWNrc1tuZHhdKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLSBjcmVh
dGluZyB0cmFja3MgZm9yOiBbIiArIGxhbmd1YWdlcyArICJdLiIpOworICAgICAgICAgICAgICAg
IGZvciAodmFyIG5keCA9IDA7IG5keCA8IGxhbmd1YWdlcy5sZW5ndGg7ICsrbmR4KQorICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVUcmFja0VsZW1lbnQobGFuZ3VhZ2VzW25keF0sIG5keCA9PSBk
ZWZhdWx0SW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBuZXh0
U3RlcCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKyt0ZXN0U3RhZ2U7CisgICAg
ICAgICAgICAgICAgc3dpdGNoICh0ZXN0U3RhZ2UpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPlRlc3QgMTogdHJhY2sgc2Vs
ZWN0ZWQgYmVjYXVzZSBvZiAnZGVmYXVsdCcgYXR0cmlidXRlIik7CisgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVRyYWNrRWxlbWVudHMoWydlbicsICdmcicsICdubyddLCAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRMYW5ndWFnZSA9ICdmcic7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIjxicj5UZXN0IDI6IHRyYWNrIHNlbGVjdGVkIGJlY2F1c2Ugb2Ygb3JpZ2lu
YWwgdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2UiKTsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRl
VHJhY2tFbGVtZW50cyhbJ2ZyJywgJ2VuJywgJ25vJ10pOworICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZExhbmd1YWdlID0gJ25vJzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPlRlc3QgMzogcHJlZmVycmVkIGxhbmd1YWdlIGNoYW5nZWQgYnkgc2VsZWN0aW5nIHRyYWNr
IGZyb20gbWVudSIpOworICAgICAgICAgICAgICAgICAgICBzaG93Q2FwdGlvbk1lbnUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdENhcHRpb25NZW51SXRlbSgyKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUiLCAic2hvd2luZyIp
OworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0u
bGFuZ3VhZ2UiLCAiZnIiKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRMYW5ndWFnZSA9
ICdmcic7CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRyYWNrRWxlbWVudHMoWyAnbm8nLCAn
ZnInLCAnZW4nLF0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCA0
OiB0dXJuaW5nIGNhcHRpb25zIG9mZiBmcm9tIG1lbnUgZGlzYWJsZXMgY2FwdGlvbnMiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvd0NhcHRpb25NZW51KCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RDYXB0aW9uTWVudUl0ZW0oMCk7CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRyYWNr
RWxlbWVudHMoWyAncnUnLCAnanAnLCAnZW4nLF0pOworICAgICAgICAgICAgICAgICAgICB0aW1l
ciA9IHNldFRpbWVvdXQobmV4dFN0ZXAsIDI1MCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgY2FzZSA3OgorICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBuZHggPSAwOyBuZHggPCB2aWRlby50ZXh0VHJhY2tzLmxlbmd0aDsgKytuZHgpCisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbIiArIG5keCAr
ICJdLm1vZGUiLCAiZGlzYWJsZWQiKTsKKworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5k
TWVkaWFFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmls
ZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7CisgICAgICAgICAgICAgICAgdmlkZW8uYWRk
RXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBuZXh0U3RlcCk7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+U2V0IHVzZXIgbGFuZ3VhZ2VzIHRvOiBbJ25vJywgJ2VzLUVT
JywgJ2VuJywgJ2ZyJ10uIik7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldFVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoWydubycsICdlcy1FUycsICdlbicsICdmciddKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJz
dGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCB0cmFjayB1c2VyIHByZWZlcmVuY2VzLjwvcD4KKyAg
ICAgICAgPHZpZGVvIHdpZHRoPSI1MDAiIGhlaWdodD0iMzAwIiBjb250cm9scz4KKyAgICAgICAg
PC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187654</attachid>
            <date>2013-02-11 13:35:50 -0800</date>
            <delta_ts>2013-02-11 13:40:46 -0800</delta_ts>
            <desc>Skip the new test on ports that don&apos;t have a caption menu</desc>
            <filename>patch_10.txt</filename>
            <type>text/plain</type>
            <size>38777</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjQ5
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAy
LTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtN
YWNdIFRyYWNrIGxhbmd1YWdlIHNlbGVjdGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6IEV4cG9ydCBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcy4KKwog
MjAxMy0wMi0xMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgKiBTb3VyY2UvV2ViQ29yZTogTW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZSwgYWRkaW5n
IEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDI0OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4
MiBAQAorMjAxMy0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSBUcmFjayBsYW5ndWFnZSBzZWxlY3Rpb24gc2hvdWxkIGJlIHN0aWNr
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hvb3Np
bmcgYSB0ZXh0IHRyYWNrIGZyb20gdGhlIGNhcHRpb24gbWVudSBzaG91bGQgbWFrZSB0aGF0IHRy
YWNrJ3MgbGFuZ3VhZ2UgdGhlCisgICAgICAgIHByZWZlcnJlZCBjYXB0aW9uIGxhbmd1YWdlLiBU
dXJuaW5nIGNhcHRpb25zIG9mZiBmcm9tIHRoZSBtZW51IHNob3VsZCBkaXNhYmxlIGNhcHRpb25z
CisgICAgICAgIGluIHZpZGVvcyBsb2FkZWQgc3Vic2VxdWVudGx5LgorCisgICAgICAgIE9TIFgg
aGFzIHN5c3RlbSBzdXBwb3J0IGZvciB0aGVzZSBzZXR0aW5ncywgc28gY2hhbmdlcyBtYWRlIGJ5
IERSVCBzaG91bGQgbm90IGNoYW5nZSB0aGUKKyAgICAgICAgc2V0dGluZ3Mgb24gdGhlIHVzZXIn
cyBzeXN0ZW0uIEFkZCBzdXBwb3J0IGZvciBhbGwgb3RoZXIgcG9ydHMgaW4gRFJUIG9ubHkuCisK
KyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IFBhZ2VHcm91cDo6Y2FwdGlvblByZWZl
cmVuY2VzKCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IFVzZSBwYWdl
KCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRhY2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmRldGFjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrR3JvdXApOiBEaXR0by4gVXBkYXRlIGZv
ciAKKyAgICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QgY2hhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KTogU2V0IHVz
ZXIgcHJlZnMgZm9yIGNhcHRpb25zIHZpc2libGUgYW5kCisgICAgICAgICAgICBjYXB0aW9uIGxh
bmd1YWdlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogUmVtb3ZlIHVubmVl
ZGVkIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcyk6ICBVc2UgcGFnZSgpLT5ncm91cCgpLmNhcHRpb25Q
cmVmZXJlbmNlcygpLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6Y2xvc2VkQ2FwdGlv
blRyYWNrc0NoYW5nZWQpOiBVcGRhdGUgY2FwdGlvbiBtZW51IGJ1dHRvbiB2aXNpYmlsaXR5Lgor
CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogU3VwcG9y
dCAidGVzdGluZyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJh
Y2tzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1
bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRQcmVmZXJyZWRMYW5ndWFnZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVy
cmVkTGFuZ3VhZ2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjp0ZXN0aW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6c2V0VGVzdGluZ01vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBEaXR0by4K
KworICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oOgorICAgICAgICAq
IHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBTdXBwb3J0ICJ0
ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVnaXN0ZXJG
b3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBDaGFuZ2UgbmFtZSBmcm9tCisgICAgICAg
ICAgICByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MuIFN1cHBv
cnQgInRlc3RpbmciIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjp1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogIENoYW5n
ZSBuYW1lIGZyb20KKyAgICAgICAgICAgIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzLiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUp
OiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1YWdlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpwcmVm
ZXJyZWRMYW5ndWFnZXMpOiBEaXR0by4gUmV0dXJuIHRoZSBwbGF0Zm9ybSBvdmVycmlkZSB3aGVu
IHNldC4KKworICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KTogUmVtb3ZlIGJlY2F1c2UgaXQgaXMgYWxyZWFkeQorICAgICAgICAgICAgYXZhaWxhYmxlIGZy
b20gdGhlIGNhcHRpb24gcHJlZmVyZW5jZSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpQYWdl
R3JvdXA6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJQcmVmZXJzQ2FwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6dXNlckhhc0NhcHRpb25QcmVm
ZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9uRm9u
dFNpemVTY2FsZSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KTogVGFrZSB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGlu
c3RlYWQgb2YgYXNzdW1pbmcKKyAgICAgICAgICAgIHRoZSBzeXN0ZW0gbGlzdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTog
RGlzYWJsZSBjYXB0aW9uIHRlc3RpbmcgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6SW50ZXJuYWxzKTogRW5hYmxlIGNhcHRpb24gdGVzdGluZyBtb2RlIHNvIHRoZSB1c2VyJ3Mg
c3lzdGVtCisgICAgICAgICAgICBwcmVmZXJlbmNlcyBhcmUgbm90IG1vZGlmaWVkLgorCiAyMDEz
LTAyLTExICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVGltZWxpbmU6IGludmFsaWRhdGUgYW5kIGZvcmNlIGxvY2F0aW9ucyBh
cmUgc2FtZSBmb3IgTGF5b3V0IHJlY29yZHMgY2F1c2VkIGJ5IHN0eWxlIHJlY2FsY3VsYWl0b24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjc3MiwzICsyNzcyLDcgQEAg
X19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjVhcgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCiBfX1pON1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZO
M1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMx
XzZTdHJpbmdFRQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdgorI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNyw5ICszMTcsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpIHsK
LSAgICAgICAgUGFnZUdyb3VwJiBncm91cCA9IGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCk7Ci0g
ICAgICAgIGlmIChncm91cC51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCi0gICAgICAgICAg
ICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7CisgICAg
ICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50
LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CisgICAgICAgIGlmIChjYXB0
aW9uUHJlZmVyZW5jZXMtPnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAg
IG1fZGlzYWJsZUNhcHRpb25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNDYXB0
aW9ucygpOwogICAgIH0KICNlbmRpZgogfQpAQCAtNTkxLDcgKzU5MSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6YXR0YWNoKCkKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCku
cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnJl
Z2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCiB9CiAK
QEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRldGFjaCgpCiB7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS51bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT51bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCiAgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgp
OwogfQpAQCAtMjk5Miw4ICsyOTkyLDggQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJl
ZmVyc0NhcHRpbwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
UGFnZUdyb3VwJiBncm91cCA9IHBhZ2UtPmdyb3VwKCk7Ci0gICAgcmV0dXJuIGdyb3VwLnVzZXJI
YXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7Cisg
ICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gcGFnZS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2Vz
LT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT51c2Vy
UHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50
ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29uc3QKQEAgLTMwMTksMTUgKzMw
MTksMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAgIEFT
U0VSVChncm91cC50cmFja3Muc2l6ZSgpKTsKIAogICAgIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5n
dWFnZTsKLSAgICBpZiAoZ3JvdXAuaGFzU3JjTGFuZykgewotICAgICAgICBWZWN0b3I8U3RyaW5n
PiBsYW5ndWFnZXM7Ci0gICAgICAgIGxhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdy
b3VwLnRyYWNrcy5zaXplKCkpOworICAgIGlmIChncm91cC5oYXNTcmNMYW5nICYmIGRvY3VtZW50
KCktPnBhZ2UoKSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0cmFja0xhbmd1YWdlczsKKyAg
ICAgICAgdHJhY2tMYW5ndWFnZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShncm91cC50cmFja3Mu
c2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncm91cC50cmFja3Muc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyBzcmNMYW5ndWFnZSA9IGdyb3VwLnRyYWNr
c1tpXS0+bGFuZ3VhZ2UoKTsKICAgICAgICAgICAgIGlmIChzcmNMYW5ndWFnZS5sZW5ndGgoKSkK
LSAgICAgICAgICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKHNyY0xhbmd1YWdlKTsKKyAgICAgICAg
ICAgICAgICB0cmFja0xhbmd1YWdlcy5hcHBlbmQoc3JjTGFuZ3VhZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIGJlc3RNYXRjaGluZ0xhbmd1YWdlID0gcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChs
YW5ndWFnZXMpOworICAgICAgICBiZXN0TWF0Y2hpbmdMYW5ndWFnZSA9IHByZWZlcnJlZExhbmd1
YWdlRnJvbUxpc3QodHJhY2tMYW5ndWFnZXMsIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKS0+cHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwogICAgIH0KIAogICAg
IC8vIEZpcnN0LCBmaW5kIHRoZSB0cmFjayBpbiB0aGUgZ3JvdXAgdGhhdCBzaG91bGQgYmUgZW5h
YmxlZCAoaWYgYW55KS4KQEAgLTMwODUsMTAgKzMwODUsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVUcmFja0F0SW5kZQogICAgIGlmICghdHJhY2tMaXN0IHx8ICF0cmFja0xpc3Qt
Pmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
KiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5w
YWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkgOiAwOworICAgIGlmIChjYXB0aW9u
UHJlZmVyZW5jZXMpCisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNlclByZWZlcnND
YXB0aW9ucyhpbmRleCAhPSB0ZXh0VHJhY2tzT2ZmSW5kZXgoKSk7CisKICAgICBmb3IgKGludCBp
ID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CiAg
ICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAgICAgIGlm
IChpID09IGluZGV4KQorICAgICAgICBpZiAoaSA9PSBpbmRleCkgewogICAgICAgICAgICAgdHJh
Y2stPnNldE1vZGUoVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKTsKKyAgICAgICAgICAgIGlm
IChjYXB0aW9uUHJlZmVyZW5jZXMgJiYgdHJhY2stPmxhbmd1YWdlKCkubGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRQcmVmZXJyZWRMYW5ndWFnZSh0cmFj
ay0+bGFuZ3VhZ2UoKSk7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZXhjbHVzaXZlIHx8
IGluZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NPZmZJbmRleCgpKQogICAgICAg
ICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKSk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDIsOSAr
NzQyLDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdAogewogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCkgewotICAgICAgICAvLyBGSVhNRTogQWRkIG1vZGlmaWVyIGtleSBmb3Ig
ZXhjbHVzaXZpdHkgb3ZlcnJpZGUuCi0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAz
MzYxCi0KICAgICAgICAgTm9kZSogdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsK
ICAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyOSw3ICsxMzI2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZQogICAgIGZsb2F0IHNtYWxsZXN0RGltZW5zaW9uID0gc3RkOjpt
aW4obV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSwgbV92aWRlb0Rpc3BsYXlTaXpl
LnNpemUoKS53aWR0aCgpKTsKIAogICAgIGJvb2wgaW1wb3J0YW50OwotICAgIGZsb2F0IGZvbnRT
aXplID0gc21hbGxlc3REaW1lbnNpb24gKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNh
cHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCkpOworICAgIGZsb2F0IGZvbnRTaXplID0gc21h
bGxlc3REaW1lbnNpb24gKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpLT5jYXB0aW9uRm9udFNpemVTY2FsZShpbXBvcnRhbnQpKTsKICAgICBpZiAoZm9u
dFNpemUgIT0gbV9mb250U2l6ZSkgewogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5n
OjpudW1iZXIoZm9udFNpemUpICsgInB4IiwgaW1wb3J0YW50KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAkocmV2aXNpb24g
MTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwLDYgKzUwMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJv
bHNBcHBsZTo6Y2xvc2VkQ2FwdGlvblRyCiB7CiAgICAgaWYgKG1fY2xvc2VkQ2FwdGlvbnNUcmFj
a0xpc3QpCiAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnJlc2V0VHJhY2tMaXN0
TWVudSgpOworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7CisgICAgICAg
IGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAgIH0KIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNiArNTAsMjIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IGNyZWF0ZShQYWdl
R3JvdXAqIGdyb3VwKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cyhncm91cCkpOyB9CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpIHsgfQog
Ci0gICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGUgPyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgOiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVy
ZW5jZSkgeyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgPSBwcmVmZXJlbmNlOyB9CiAgICAgdmlydHVh
bCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0IHsgaW1w
b3J0YW50ID0gZmFsc2U7IHJldHVybiAwLjA1ZjsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvclByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIGNv
bnN0IHsgfQotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkg
Y29uc3QgeyByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSB7IG1fdXNl
clByZWZlcnJlZExhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBsYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgICAgIGlmICht
X3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBsYW5ndWFnZXMuaW5zZXJ0KDAsIG1fdXNlclByZWZlcnJlZExhbmd1YWdlKTsKKyAg
ICAgICAgcmV0dXJuIGxhbmd1YWdlczsKKyAgICB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNw
bGF5TmFtZUZvclRyYWNrKFRleHRUcmFjayogdHJhY2spIGNvbnN0CiAgICAgewpAQCAtNzAsMTMg
Kzc2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRyYWNrLT5sYW5ndWFnZSgpOwogICAg
IH0KIAorICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVz
dGluZ01vZGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlk
ZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7IH0KKwogICAgIFBhZ2VHcm91cCogcGFnZUdy
b3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogcHJvdGVjdGVkOgotICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkgOiBtX3BhZ2VHcm91cChncm91cCkgeyB9
CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAqIGdyb3VwKQorICAgICAgICA6
IG1fcGFnZUdyb3VwKGdyb3VwKQorICAgICAgICAsIG1fdGVzdGluZ01vZGUoZmFsc2UpCisgICAg
ICAgICwgbV91c2VyUHJlZmVyc0NhcHRpb25zKGZhbHNlKQorICAgIHsKKyAgICB9CiAKIHByaXZh
dGU6CiAgICAgUGFnZUdyb3VwKiBtX3BhZ2VHcm91cDsKKyAgICBTdHJpbmcgbV91c2VyUHJlZmVy
cmVkTGFuZ3VhZ2U7CisgICAgYm9vbCBtX3Rlc3RpbmdNb2RlOworICAgIGJvb2wgbV91c2VyUHJl
ZmVyc0NhcHRpb25zOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsMTUgKzQxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjKCk7CiAKICNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29s
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JQcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjLm1tCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp+Q2FwdGlvblVzZXJQCiAjaWYgTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJp
bGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmls
aXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNl
clByZWZlcnNDYXB0aW9ucygpOwogCiAgICAgcmV0dXJuIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
aG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKTsKQEAgLTExMCw3ICsx
MTAsNyBAQCBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmCiAKIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHBy
ZWZlcmVuY2UpCiB7Ci0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKKyAg
ICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7CiAg
ICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMocHJl
ZmVyZW5jZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjAsMTYgKzEyMCwxNiBAQCB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFVzZXJQCiAKIGJvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKIAotICAgIHJl
dHVybiAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpOworICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
IGxpc3RlbmVyKQordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvclBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqIGxpc3RlbmVyKQogewogICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7
Ci0gICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7CisgICAgICAgIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ3LDEwICsxNDcsMTAgQEAgdm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlcgogICAgIG1fY2FwdGlvblByZWZlcmVu
Y2VDaGFuZ2VMaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQordm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCiB7
CiAgICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKLSAgICAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3MobGlzdGVuZXIpOworICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1bnJl
Z2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW8KIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNj
ZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nl
c3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQ7CkBAIC00MDMsNyArNDAzLDcgQEAgU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7CiAKICAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CkBAIC00NDcsOSArNDQ3LDkg
QEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1cGRhdGVDYQogICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZl
bCwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKLXZvaWQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSBjb25zdAor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJp
bmcgbGFuZ3VhZ2UpCiB7Ci0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsK
KyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7
CiAgICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKGxh
bmd1YWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1OSwyMyArNDU5LDMzIEBAIHZv
aWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0UHJlZmUKIAogVmVjdG9yPFN0cmluZz4g
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKIHsK
LSAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZSA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpOwotICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gb3Zl
cnJpZGU7Ci0KLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAo
dGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICBy
ZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKKyAg
ICBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybUxhbmd1YWdlcyA9IHBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJl
ZExhbmd1YWdlc092ZXJyaWRlKCk7CisgICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgaWYgKHBsYXRmb3JtTGFuZ3VhZ2VzLnNpemUoKSAhPSBvdmVycmlkZS5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3ZlcnJpZGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChvdmVycmlkZVtpXSAh
PSBwbGF0Zm9ybUxhbmd1YWdlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGU7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2Vz
KEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKSk7CiAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CiAKICAgICBpZiAoIWxhbmd1YWdlQ291
bnQpCiAgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5n
dWFnZXMoKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFu
Z3VhZ2VDb3VudCk7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
KyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLnJlc2VydmVDYXBhY2l0eShsYW5ndWFnZUNvdW50
ICsgcGxhdGZvcm1MYW5ndWFnZXMuc2l6ZSgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBw
ZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1
YWdlcy5nZXQoKSwgaSkpKTsKIAorICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBs
YXRmb3JtTGFuZ3VhZ2VzKTsKKwogICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxNDI0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyOCwzMyArNDI4LDYgQEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogUGFnZUdyb3VwOjpj
YXB0aQogCiAgICAgcmV0dXJuIG1fY2FwdGlvblByZWZlcmVuY2VzLmdldCgpOwogfQotICAgIAot
dm9pZCBQYWdlR3JvdXA6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAg
IGNhcHRpb25QcmVmZXJlbmNlcygpLT5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MobGlzdGVuZXIpOwotfQotCi12b2lkIFBhZ2VHcm91cDo6dW5yZWdpc3RlckZv
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2Vz
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FwdGlvblByZWZlcmVuY2VzKCktPnVucmVnaXN0ZXJG
b3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKLX0KLSAgICAK
LWJvb2wgUGFnZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkKLXsKLSAgICByZXR1cm4gY2Fw
dGlvblByZWZlcmVuY2VzKCktPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKLX0KLQotYm9vbCBQYWdl
R3JvdXA6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKQotewotICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMoKS0+dXNlclByZWZlcnNDYXB0aW9ucygpOwotfQotCi1mbG9hdCBQYWdlR3Jv
dXA6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkKLXsKLSAgICByZXR1cm4g
Y2FwdGlvblByZWZlcmVuY2VzKCktPmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7Ci19
CiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9uIDE0MjQx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSwxMSArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHcm91cFNldHRp
bmdzKiBncm91cFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cFNldHRpbmdzLmdldCgp
OyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIGJvb2wgdXNlclByZWZlcnND
YXB0aW9ucygpOwotICAgICAgICBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAg
ICAgICAgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYpOwotICAgICAgICB2b2lkIHJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKLSAgICAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIqKTsKICAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVu
Y2VzKCk7CiAjZW5kaWYKIApAQCAtMTIyLDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIHN0cmluZ0hhc2gpOwogICAg
ICAgICB2b2lkIGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygp
OwotICAKKwogICAgICAgICBTdHJpbmcgbV9uYW1lOwogCiAgICAgICAgIEhhc2hTZXQ8UGFnZSo+
IG1fcGFnZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lv
biAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMCArMTM5LDggQEAgc3RhdGljIFN0cmluZyBiZXN0TWF0Y2hpbmdM
YW5ndWFnZShjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1TdHJpbmcgcHJl
ZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0
KQorU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxhbmd1YWdlTGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKQog
ewotICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkTGFuZ3Vh
Z2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBiZXN0TWF0Y2ggPSBiZXN0TWF0Y2hp
bmdMYW5ndWFnZShjYW5vbmljYWxMYW5ndWFnZUlkZW50aWZpZXIocHJlZmVycmVkTGFuZ3VhZ2Vz
W2ldKSwgbGFuZ3VhZ2VMaXN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2Uo
KTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIFZlY3RvcjxTdHJp
bmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLVN0cmluZyBwcmVmZXJy
ZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CitTdHJpbmcgcHJlZmVy
cmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMpOwogCiAvLyBUaGUgb2JzZXJ2
ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBzeXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcy4K
IHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbikodm9pZCogY29u
dGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAx
NDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw2ICsxMzIsMTEgQEAKICNpbmNsdWRlICJNb2NrQ0RNLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCkBAIC0yNTQsMTEgKzI1OSwxOCBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQCiAgICAgaWYgKHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSkKICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnNldFRlc3RpbmdNb2Rl
KGZhbHNlKTsKKyNlbmRpZgogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVudCkKIHsKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5wYWdl
KCkpCisgICAgICAgIGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2Vz
KCktPnNldFRlc3RpbmdNb2RlKHRydWUpOworI2VuZGlmCiB9CiAKIERvY3VtZW50KiBJbnRlcm5h
bHM6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJ
KHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHdv
cmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsNyBAQCBfWk42V2ViS2l0MjJXZWJHdGtFeHRlbnNp
b25NYW5hZ2VyNnNoYXJlCiBfWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDExaXNVbmRlclRlc3RFdjsKIF9aTjdXZWJDb3JlN0VsZW1lbnQxNmNyZWF0ZVNoYWRvd1Jvb3RF
Umk7CiBfWk5LN1dlYkNvcmU0S1VSTDZzdHJpbmdFdjsKK19aTjdXZWJDb3JlOVBhZ2VHcm91cDE4
Y2FwdGlvblByZWZlcmVuY2VzRXYKIAogbG9jYWw6CiBfWio7CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDI0OTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMy0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWFjXSBUcmFjayBsYW5ndWFnZSBzZWxlY3Rpb24gc2hvdWxkIGJlIHN0
aWNreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
ZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sOiBBZGRlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgbmV3
IHRlc3QsIGl0IGRlcGVuZHMgb24gdGhlIHRyYWNrIG1lbnUuCisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0
RXhwZWN0YXRpb25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczogRGl0
dG8uCisKIDIwMTMtMDItMTEgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1
bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4KSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5j
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzcgQEAKK1Rlc3QgdHJhY2sgdXNlciBwcmVmZXJlbmNlcy4KKworCitTZXQgdXNlciBsYW5n
dWFnZXMgdG86IFsnbm8nLCAnZXMtRVMnLCAnZW4nLCAnZnInXS4KKworVGVzdCAxOiB0cmFjayBz
ZWxlY3RlZCBiZWNhdXNlIG9mICdkZWZhdWx0JyBhdHRyaWJ1dGUKKy0gY3JlYXRpbmcgdHJhY2tz
IGZvcjogW2VuLGZyLG5vXS4KK0VWRU5UKGxvYWQpCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnNy
Y2xhbmcgPT0gJ2ZyJykgT0sKK0VYUEVDVEVEIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAn
MicpIE9LCisKK1Rlc3QgMjogdHJhY2sgc2VsZWN0ZWQgYmVjYXVzZSBvZiBvcmlnaW5hbCB1c2Vy
IHByZWZlcnJlZCBsYW5ndWFnZQorLSBjcmVhdGluZyB0cmFja3MgZm9yOiBbZnIsZW4sbm9dLgor
RVZFTlQobG9hZCkKK0VYUEVDVEVEIChldmVudC50YXJnZXQuc3JjbGFuZyA9PSAnbm8nKSBPSwor
RVhQRUNURUQgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09ICcyJykgT0sKKworVGVzdCAzOiBw
cmVmZXJyZWQgbGFuZ3VhZ2UgY2hhbmdlZCBieSBzZWxlY3RpbmcgdHJhY2sgZnJvbSBtZW51Cist
IHNob3cgY2FwdGlvbnMgbWVudS4KKy0gY2xpY2sgb24gbWVudSBpdGVtIDIuCitFWFBFQ1RFRCAo
dmlkZW8udGV4dFRyYWNrc1swXS5tb2RlID09ICdzaG93aW5nJykgT0sKK0VYUEVDVEVEICh2aWRl
by50ZXh0VHJhY2tzWzBdLmxhbmd1YWdlID09ICdmcicpIE9LCistIGNyZWF0aW5nIHRyYWNrcyBm
b3I6IFtubyxmcixlbl0uCitFVkVOVChsb2FkKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldC5zcmNs
YW5nID09ICdmcicpIE9LCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzIn
KSBPSworCitUZXN0IDQ6IHR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZyb20gbWVudSBkaXNhYmxlcyBj
YXB0aW9ucworLSBzaG93IGNhcHRpb25zIG1lbnUuCistIGNsaWNrIG9uIG1lbnUgaXRlbSAwLgor
LSBjcmVhdGluZyB0cmFja3MgZm9yOiBbcnUsanAsZW5dLgorRVhQRUNURUQgKHZpZGVvLnRleHRU
cmFja3NbMF0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3NbMV0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3Nb
Ml0ubW9kZSA9PSAnZGlzYWJsZWQnKSBPSworCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJl
bmNlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlNlbGVjdGluZyBmcm9tIGEgbGlz
dCBvZiB0cmFja3M8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtY29udHJv
bHMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3RyYWNrbWVudS10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB0aW1lciA9IG51bGw7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRMYW5ndWFnZTsKKyAgICAgICAgICAgIHZhciB0ZXN0U3RhZ2UgPSAw
OworICAgICAgICAgICAgdmFyIGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXM7CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHNob3dDYXB0aW9uTWVudSgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2FwdGlvbnNCdXR0b25Db29yZGluYXRlcyA9IG1lZGlhQ29udHJvbHNCdXR0b25Db29y
ZGluYXRlcyh2aWRlbywgInRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMtYnV0dG9uIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCItIHNob3cgY2FwdGlvbnMgbWVudS4iKTsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjYXB0aW9uc0J1dHRvbkNvb3JkaW5hdGVz
WzBdLCBjYXB0aW9uc0J1dHRvbkNvb3JkaW5hdGVzWzFdKTsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KG5leHRTdGVwLCAxMDApOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja01lbnVMaXN0KCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0RWxlbWVudCA9IGdldFRy
YWNrTGlzdEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYWNrTGlzdEVsZW1lbnQp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIC8vIFRyYWNr
IGxpc3Qgc2hvdWxkIGhhdmUgYSA8dWw+IHdpdGggPGxpPiBjaGlsZHJlbiAoT25lIG9mIHRoZW0g
aXMgIk9mZiIpLgorICAgICAgICAgICAgICAgIHZhciB0cmFja0xpc3QgPSB0cmFja0xpc3RFbGVt
ZW50LnF1ZXJ5U2VsZWN0b3IoInVsIik7CisgICAgICAgICAgICAgICAgaWYgKCF0cmFja0xpc3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkNvdWxkIG5vdCBmaW5kIGEgY2hpbGQg
dWwgZWxlbWVudCBpbiB0cmFjayBsaXN0IG1lbnUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0SXRl
bXMgPSB0cmFja0xpc3QucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXRyYWNrTGlzdEl0ZW1zKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3Vs
ZCBub3QgZmluZCBjaGlsZCBsaSBlbGVtZW50cyBpbiB0cmFjayBsaXN0IG1lbnUiKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIHJldHVybiB0cmFja0xpc3RJdGVtczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKGluZGV4KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLSBjbGljayBvbiBtZW51IGl0ZW0gIiArIGluZGV4
ICsgIi4iKTsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0SXRlbXMgPSB0cmFja01lbnVM
aXN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkVHJhY2tJdGVtID0gdHJhY2tMaXN0
SXRlbXNbaW5kZXhdOworICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSBzZWxlY3Rl
ZFRyYWNrSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICB2YXIg
eCA9IGJvdW5kaW5nUmVjdC5sZWZ0ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMjsKKyAgICAgICAg
ICAgICAgICB2YXIgeSA9IGJvdW5kaW5nUmVjdC50b3AgKyBib3VuZGluZ1JlY3QuaGVpZ2h0IC8g
MjsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRyYWNrTG9hZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkVWRU5UKGxvYWQpIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudC50
YXJnZXQuc3JjbGFuZyIsIGV4cGVjdGVkTGFuZ3VhZ2UpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgiZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUiLCBIVE1MVHJhY2tFbGVtZW50LkxPQURF
RCk7CisKKyAgICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQobmV4dFN0ZXAsIDIwMCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVRyYWNrRWxlbWVu
dChsYW5ndWFnZSwgaXNEZWZhdWx0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh
ciB0cmFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJyk7CisgICAgICAgICAgICAg
ICAgdHJhY2suc2V0QXR0cmlidXRlKCdraW5kJywgImNhcHRpb25zIik7CisgICAgICAgICAgICAg
ICAgdHJhY2suc3JjID0gJ2RhdGE6dGV4dC92dHQsJytlbmNvZGVVUklDb21wb25lbnQoIldFQlZU
VFxuXG4wMDowMDowMC4wMDAgLS0+IDAwOjAwOjAxLjAwMFxuQ2FwdGlvbiAxXG4iKTsKKyAgICAg
ICAgICAgICAgICB0cmFjay5zZXRBdHRyaWJ1dGUoJ3NyY2xhbmcnLCBsYW5ndWFnZSk7CisgICAg
ICAgICAgICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdvbmxvYWQnLCAndHJhY2tMb2FkZWQoKScp
OworICAgICAgICAgICAgICAgIGlmIChpc0RlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgIHRy
YWNrLnNldEF0dHJpYnV0ZSgnZGVmYXVsdCcsICdkZWZhdWx0Jyk7CisgICAgICAgICAgICAgICAg
dmlkZW8uYXBwZW5kQ2hpbGQodHJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBjcmVhdGVUcmFja0VsZW1lbnRzKGxhbmd1YWdlcywgZGVmYXVsdEluZGV4KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB0cmFja3MgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCd0cmFjaycpOworICAgICAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5k
eCA8IHRyYWNrcy5sZW5ndGg7ICsrbmR4KQorICAgICAgICAgICAgICAgICAgICB2aWRlby5yZW1v
dmVDaGlsZCh0cmFja3NbbmR4XSk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0g
Y3JlYXRpbmcgdHJhY2tzIGZvcjogWyIgKyBsYW5ndWFnZXMgKyAiXS4iKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCBsYW5ndWFnZXMubGVuZ3RoOyArK25keCkKKyAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50KGxhbmd1YWdlc1tuZHhdLCBuZHgg
PT0gZGVmYXVsdEluZGV4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
bmV4dFN0ZXAoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICsrdGVzdFN0YWdlOwor
ICAgICAgICAgICAgICAgIHN3aXRjaCAodGVzdFN0YWdlKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSAxOgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5UZXN0IDE6IHRyYWNr
IHNlbGVjdGVkIGJlY2F1c2Ugb2YgJ2RlZmF1bHQnIGF0dHJpYnV0ZSIpOworICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVUcmFja0VsZW1lbnRzKFsnZW4nLCAnZnInLCAnbm8nXSwgMSk7CisgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkTGFuZ3VhZ2UgPSAnZnInOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCAyOiB0cmFjayBzZWxlY3RlZCBiZWNhdXNlIG9mIG9y
aWdpbmFsIHVzZXIgcHJlZmVycmVkIGxhbmd1YWdlIik7CisgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZVRyYWNrRWxlbWVudHMoWydmcicsICdlbicsICdubyddKTsKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRMYW5ndWFnZSA9ICdubyc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj5UZXN0IDM6IHByZWZlcnJlZCBsYW5ndWFnZSBjaGFuZ2VkIGJ5IHNlbGVjdGluZyB0
cmFjayBmcm9tIG1lbnUiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvd0NhcHRpb25NZW51KCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSA0Ogor
ICAgICAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMik7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5tb2RlIiwgInNob3dp
bmciKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tz
WzBdLmxhbmd1YWdlIiwgImZyIik7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTGFuZ3Vh
Z2UgPSAnZnInOworICAgICAgICAgICAgICAgICAgICBjcmVhdGVUcmFja0VsZW1lbnRzKFsgJ25v
JywgJ2ZyJywgJ2VuJyxdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPlRl
c3QgNDogdHVybmluZyBjYXB0aW9ucyBvZmYgZnJvbSBtZW51IGRpc2FibGVzIGNhcHRpb25zIik7
CisgICAgICAgICAgICAgICAgICAgIHNob3dDYXB0aW9uTWVudSgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKDApOworICAgICAgICAgICAgICAgICAgICBjcmVhdGVU
cmFja0VsZW1lbnRzKFsgJ3J1JywgJ2pwJywgJ2VuJyxdKTsKKyAgICAgICAgICAgICAgICAgICAg
dGltZXIgPSBzZXRUaW1lb3V0KG5leHRTdGVwLCAyNTApOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICAgICAgZm9y
ICh2YXIgbmR4ID0gMDsgbmR4IDwgdmlkZW8udGV4dFRyYWNrcy5sZW5ndGg7ICsrbmR4KQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWyIgKyBu
ZHggKyAiXS5tb2RlIiwgImRpc2FibGVkIik7CisKKyAgICAgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoJ3ZpZGVvJywgJy4uL2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgICAgIHZpZGVv
LmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgbmV4dFN0ZXApOworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPlNldCB1c2VyIGxhbmd1YWdlcyB0bzogWydubycsICdl
cy1FUycsICdlbicsICdmciddLiIpOworICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKFsnbm8nLCAnZXMtRVMnLCAnZW4nLCAnZnInXSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5IG9ubG9h
ZD0ic3RhcnQoKSI+CisgICAgICAgIDxwPlRlc3QgdHJhY2sgdXNlciBwcmVmZXJlbmNlcy48L3A+
CisgICAgICAgIDx2aWRlbyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMwMCIgY29udHJvbHM+CisgICAg
ICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDI0MTEpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjAwLDYgKzM2MDAsNyBAQCB3ZWJraXQub3JnL2IvMTA4NDI5IHN2Zy9yZXBh
aW50L3N2Z3N2Z2VsCiB3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNh
cHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlh
L3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQuaHRtbCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21l
bnUtbG9jYWxpemVkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdHJh
Y2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi85
MjgzNSBbIEFuZHJvaWQgTWFjIFdpbiBEZWJ1ZyBdIHN2Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL3N2
Zy1hcy1iYWNrZ3JvdW5kLTUuaHRtbCBbIFBhc3MgU2xvdyBdCiAKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDI0MTEpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
MTcyNiw2ICsxNzI2LDcgQEAgd2Via2l0Lm9yZy9iLzEwMjQ5MyBmYXN0L2V2ZW50cy9tb3VzZS1j
dQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFj
a21lbnUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250
cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXpl
ZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3RyYWNrL3RyYWNrLXVz
ZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNraXAgXQogCiAjIEZhaWxzIHVudGlsIHdlIGVuYWJsZSB0
aGUgUmVzb3VyY2UgVGltaW5nIEFQSS4KIHdlYmtpdC5vcmcvYi82MTEzOCBodHRwL3Rlc3RzL3cz
Yy93ZWJwZXJmL3N1Ym1pc3Npb24vcmVzb3VyY2UtdGltaW5nIFsgU2tpcCBdCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNDExKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29w
eSkKQEAgLTc3NSw2ICs3NzUsNyBAQCBCdWcoR1RLKSBmYXN0L21lZGlhL3ByaW50LXJlc3RvcmVz
LXByZXZpCiB3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25z
LXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVv
LWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0ZWQuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9j
YWxpemVkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdHJhY2svdHJh
Y2stdXNlci1wcmVmZXJlbmNlcy5odG1sIFsgU2tpcCBdCiAKIHdlYmtpdC5vcmcvYi8xMDcxOTQg
c3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEuaHRtbCBbIFRpbWVvdXQgXQogd2Via2l0
Lm9yZy9iLzEwNzE5NCBzdG9yYWdlL2luZGV4ZWRkYi9wZW5kaW5nLWFjdGl2aXR5LXdvcmtlcnMu
aHRtbCBbIFRpbWVvdXQgXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAxNDI0MTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0yNTI4LDYgKzI1MjgsNyBAQCB3ZWJraXQu
b3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kCiB3ZWJraXQub3JnL2IvMTAxNjcwIG1l
ZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1z
b3J0ZWQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250
cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5v
cmcvYi8xMDE2NzAgbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sIFsgU2tp
cCBdCiAKICMgTmV3LCBidXQgZmFpbGluZyB0ZXN0CiB3ZWJraXQub3JnL2IvMTAxMDM1IGZhc3Qv
aW1hZ2VzL2V4aWYtb3JpZW50YXRpb24taW1hZ2UtZG9jdW1lbnQuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE0MjQxMSkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTI1LDYgKzI1MjUsNyBAQCBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXNu
YXAtdG8tCiBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLmh0bWwKIAog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDc3CittZWRpYS90
cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLmh0bWwKIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNh
cHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRtbAogbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LXNvcnRlZC5odG1sCiBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187656</attachid>
            <date>2013-02-11 13:40:46 -0800</date>
            <delta_ts>2013-02-11 14:17:06 -0800</delta_ts>
            <desc>Add the missing &apos;;&apos;</desc>
            <filename>patch_11.txt</filename>
            <type>text/plain</type>
            <size>38778</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjQ5
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAy
LTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtN
YWNdIFRyYWNrIGxhbmd1YWdlIHNlbGVjdGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6IEV4cG9ydCBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcy4KKwog
MjAxMy0wMi0xMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgKiBTb3VyY2UvV2ViQ29yZTogTW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZSwgYWRkaW5n
IEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDI0OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4
MiBAQAorMjAxMy0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSBUcmFjayBsYW5ndWFnZSBzZWxlY3Rpb24gc2hvdWxkIGJlIHN0aWNr
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hvb3Np
bmcgYSB0ZXh0IHRyYWNrIGZyb20gdGhlIGNhcHRpb24gbWVudSBzaG91bGQgbWFrZSB0aGF0IHRy
YWNrJ3MgbGFuZ3VhZ2UgdGhlCisgICAgICAgIHByZWZlcnJlZCBjYXB0aW9uIGxhbmd1YWdlLiBU
dXJuaW5nIGNhcHRpb25zIG9mZiBmcm9tIHRoZSBtZW51IHNob3VsZCBkaXNhYmxlIGNhcHRpb25z
CisgICAgICAgIGluIHZpZGVvcyBsb2FkZWQgc3Vic2VxdWVudGx5LgorCisgICAgICAgIE9TIFgg
aGFzIHN5c3RlbSBzdXBwb3J0IGZvciB0aGVzZSBzZXR0aW5ncywgc28gY2hhbmdlcyBtYWRlIGJ5
IERSVCBzaG91bGQgbm90IGNoYW5nZSB0aGUKKyAgICAgICAgc2V0dGluZ3Mgb24gdGhlIHVzZXIn
cyBzeXN0ZW0uIEFkZCBzdXBwb3J0IGZvciBhbGwgb3RoZXIgcG9ydHMgaW4gRFJUIG9ubHkuCisK
KyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0IFBhZ2VHcm91cDo6Y2FwdGlvblByZWZl
cmVuY2VzKCkuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IFVzZSBwYWdl
KCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRhY2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmRldGFjaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrR3JvdXApOiBEaXR0by4gVXBkYXRlIGZv
ciAKKyAgICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QgY2hhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KTogU2V0IHVz
ZXIgcHJlZnMgZm9yIGNhcHRpb25zIHZpc2libGUgYW5kCisgICAgICAgICAgICBjYXB0aW9uIGxh
bmd1YWdlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogUmVtb3ZlIHVubmVl
ZGVkIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcyk6ICBVc2UgcGFnZSgpLT5ncm91cCgpLmNhcHRpb25Q
cmVmZXJlbmNlcygpLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6Y2xvc2VkQ2FwdGlv
blRyYWNrc0NoYW5nZWQpOiBVcGRhdGUgY2FwdGlvbiBtZW51IGJ1dHRvbiB2aXNpYmlsaXR5Lgor
CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zKTogU3VwcG9y
dCAidGVzdGluZyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJh
Y2tzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1
bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRQcmVmZXJyZWRMYW5ndWFnZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVy
cmVkTGFuZ3VhZ2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjp0ZXN0aW5nTW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6c2V0VGVzdGluZ01vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMpOiBEaXR0by4K
KworICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oOgorICAgICAgICAq
IHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMpOiBTdXBwb3J0ICJ0
ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVnaXN0ZXJG
b3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBDaGFuZ2UgbmFtZSBmcm9tCisgICAgICAg
ICAgICByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MuIFN1cHBv
cnQgInRlc3RpbmciIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjp1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTogIENoYW5n
ZSBuYW1lIGZyb20KKyAgICAgICAgICAgIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzLiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUp
OiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbkZvbnRTaXplU2NhbGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFByZWZlcnJlZExhbmd1YWdlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpwcmVm
ZXJyZWRMYW5ndWFnZXMpOiBEaXR0by4gUmV0dXJuIHRoZSBwbGF0Zm9ybSBvdmVycmlkZSB3aGVu
IHNldC4KKworICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VHcm91cDo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KTogUmVtb3ZlIGJlY2F1c2UgaXQgaXMgYWxyZWFkeQorICAgICAgICAgICAgYXZhaWxhYmxlIGZy
b20gdGhlIGNhcHRpb24gcHJlZmVyZW5jZSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpQYWdl
R3JvdXA6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnVzZXJQcmVmZXJzQ2FwdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6dXNlckhhc0NhcHRpb25QcmVm
ZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9uRm9u
dFNpemVTY2FsZSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmg6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRM
YW5ndWFnZUZyb21MaXN0KTogVGFrZSB0aGUgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGlu
c3RlYWQgb2YgYXNzdW1pbmcKKyAgICAgICAgICAgIHRoZSBzeXN0ZW0gbGlzdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTog
RGlzYWJsZSBjYXB0aW9uIHRlc3RpbmcgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6SW50ZXJuYWxzKTogRW5hYmxlIGNhcHRpb24gdGVzdGluZyBtb2RlIHNvIHRoZSB1c2VyJ3Mg
c3lzdGVtCisgICAgICAgICAgICBwcmVmZXJlbmNlcyBhcmUgbm90IG1vZGlmaWVkLgorCiAyMDEz
LTAyLTExICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVGltZWxpbmU6IGludmFsaWRhdGUgYW5kIGZvcmNlIGxvY2F0aW9ucyBh
cmUgc2FtZSBmb3IgTGF5b3V0IHJlY29yZHMgY2F1c2VkIGJ5IHN0eWxlIHJlY2FsY3VsYWl0b24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjc3MiwzICsyNzcyLDcgQEAg
X19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjVhcgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCiBfX1pON1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZO
M1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMx
XzZTdHJpbmdFRQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdgorI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxNyw5ICszMTcsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCkpIHsK
LSAgICAgICAgUGFnZUdyb3VwJiBncm91cCA9IGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCk7Ci0g
ICAgICAgIGlmIChncm91cC51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkpCi0gICAgICAgICAg
ICBtX2Rpc2FibGVDYXB0aW9ucyA9ICFncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7CisgICAg
ICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50
LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CisgICAgICAgIGlmIChjYXB0
aW9uUHJlZmVyZW5jZXMtPnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAg
IG1fZGlzYWJsZUNhcHRpb25zID0gIWNhcHRpb25QcmVmZXJlbmNlcy0+dXNlclByZWZlcnNDYXB0
aW9ucygpOwogICAgIH0KICNlbmRpZgogfQpAQCAtNTkxLDcgKzU5MSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6YXR0YWNoKCkKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
ZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCku
cmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnJl
Z2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCiB9CiAK
QEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRldGFjaCgpCiB7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS51bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT51bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXND
aGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2VuZGlmCiAgICAgSFRNTEVsZW1lbnQ6OmRldGFjaCgp
OwogfQpAQCAtMjk5Miw4ICsyOTkyLDggQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJl
ZmVyc0NhcHRpbwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
UGFnZUdyb3VwJiBncm91cCA9IHBhZ2UtPmdyb3VwKCk7Ci0gICAgcmV0dXJuIGdyb3VwLnVzZXJI
YXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBncm91cC51c2VyUHJlZmVyc0NhcHRpb25zKCk7Cisg
ICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVuY2VzID0gcGFnZS0+Z3Jv
dXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKKyAgICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2Vz
LT51c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgJiYgY2FwdGlvblByZWZlcmVuY2VzLT51c2Vy
UHJlZmVyc0NhcHRpb25zKCk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6dXNlcklzSW50
ZXJlc3RlZEluVGhpc1RyYWNrS2luZChTdHJpbmcga2luZCkgY29uc3QKQEAgLTMwMTksMTUgKzMw
MTksMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogICAgIEFT
U0VSVChncm91cC50cmFja3Muc2l6ZSgpKTsKIAogICAgIFN0cmluZyBiZXN0TWF0Y2hpbmdMYW5n
dWFnZTsKLSAgICBpZiAoZ3JvdXAuaGFzU3JjTGFuZykgewotICAgICAgICBWZWN0b3I8U3RyaW5n
PiBsYW5ndWFnZXM7Ci0gICAgICAgIGxhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGdy
b3VwLnRyYWNrcy5zaXplKCkpOworICAgIGlmIChncm91cC5oYXNTcmNMYW5nICYmIGRvY3VtZW50
KCktPnBhZ2UoKSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0cmFja0xhbmd1YWdlczsKKyAg
ICAgICAgdHJhY2tMYW5ndWFnZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShncm91cC50cmFja3Mu
c2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncm91cC50cmFja3Muc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFN0cmluZyBzcmNMYW5ndWFnZSA9IGdyb3VwLnRyYWNr
c1tpXS0+bGFuZ3VhZ2UoKTsKICAgICAgICAgICAgIGlmIChzcmNMYW5ndWFnZS5sZW5ndGgoKSkK
LSAgICAgICAgICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKHNyY0xhbmd1YWdlKTsKKyAgICAgICAg
ICAgICAgICB0cmFja0xhbmd1YWdlcy5hcHBlbmQoc3JjTGFuZ3VhZ2UpOwogICAgICAgICB9Ci0g
ICAgICAgIGJlc3RNYXRjaGluZ0xhbmd1YWdlID0gcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChs
YW5ndWFnZXMpOworICAgICAgICBiZXN0TWF0Y2hpbmdMYW5ndWFnZSA9IHByZWZlcnJlZExhbmd1
YWdlRnJvbUxpc3QodHJhY2tMYW5ndWFnZXMsIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKS0+cHJlZmVycmVkTGFuZ3VhZ2VzKCkpOwogICAgIH0KIAogICAg
IC8vIEZpcnN0LCBmaW5kIHRoZSB0cmFjayBpbiB0aGUgZ3JvdXAgdGhhdCBzaG91bGQgYmUgZW5h
YmxlZCAoaWYgYW55KS4KQEAgLTMwODUsMTAgKzMwODUsMTcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0b2dnbGVUcmFja0F0SW5kZQogICAgIGlmICghdHJhY2tMaXN0IHx8ICF0cmFja0xpc3Qt
Pmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
KiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5w
YWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkgOiAwOworICAgIGlmIChjYXB0aW9u
UHJlZmVyZW5jZXMpCisgICAgICAgIGNhcHRpb25QcmVmZXJlbmNlcy0+c2V0VXNlclByZWZlcnND
YXB0aW9ucyhpbmRleCAhPSB0ZXh0VHJhY2tzT2ZmSW5kZXgoKSk7CisKICAgICBmb3IgKGludCBp
ID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CiAg
ICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7Ci0gICAgICAgIGlm
IChpID09IGluZGV4KQorICAgICAgICBpZiAoaSA9PSBpbmRleCkgewogICAgICAgICAgICAgdHJh
Y2stPnNldE1vZGUoVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKTsKKyAgICAgICAgICAgIGlm
IChjYXB0aW9uUHJlZmVyZW5jZXMgJiYgdHJhY2stPmxhbmd1YWdlKCkubGVuZ3RoKCkpCisgICAg
ICAgICAgICAgICAgY2FwdGlvblByZWZlcmVuY2VzLT5zZXRQcmVmZXJyZWRMYW5ndWFnZSh0cmFj
ay0+bGFuZ3VhZ2UoKSk7CisgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZXhjbHVzaXZlIHx8
IGluZGV4ID09IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NPZmZJbmRleCgpKQogICAgICAg
ICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpkaXNhYmxlZEtleXdvcmQoKSk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcAkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDIsOSAr
NzQyLDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdAogewogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkuY2xpY2tFdmVudCkgewotICAgICAgICAvLyBGSVhNRTogQWRkIG1vZGlmaWVyIGtleSBmb3Ig
ZXhjbHVzaXZpdHkgb3ZlcnJpZGUuCi0gICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAz
MzYxCi0KICAgICAgICAgTm9kZSogdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsK
ICAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyOSw3ICsxMzI2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZQogICAgIGZsb2F0IHNtYWxsZXN0RGltZW5zaW9uID0gc3RkOjpt
aW4obV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSwgbV92aWRlb0Rpc3BsYXlTaXpl
LnNpemUoKS53aWR0aCgpKTsKIAogICAgIGJvb2wgaW1wb3J0YW50OwotICAgIGZsb2F0IGZvbnRT
aXplID0gc21hbGxlc3REaW1lbnNpb24gKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNh
cHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCkpOworICAgIGZsb2F0IGZvbnRTaXplID0gc21h
bGxlc3REaW1lbnNpb24gKiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpLT5jYXB0aW9uRm9udFNpemVTY2FsZShpbXBvcnRhbnQpKTsKICAgICBpZiAoZm9u
dFNpemUgIT0gbV9mb250U2l6ZSkgewogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAg
ICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5n
OjpudW1iZXIoZm9udFNpemUpICsgInB4IiwgaW1wb3J0YW50KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAkocmV2aXNpb24g
MTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwLDYgKzUwMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJv
bHNBcHBsZTo6Y2xvc2VkQ2FwdGlvblRyCiB7CiAgICAgaWYgKG1fY2xvc2VkQ2FwdGlvbnNUcmFj
a0xpc3QpCiAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnJlc2V0VHJhY2tMaXN0
TWVudSgpOworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7CisgICAgICAg
IGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAgIH0KIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNiArNTAsMjIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IGNyZWF0ZShQYWdl
R3JvdXAqIGdyb3VwKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cyhncm91cCkpOyB9CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpIHsgfQog
Ci0gICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGUgPyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgOiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVy
ZW5jZSkgeyBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMgPSBwcmVmZXJlbmNlOyB9CiAgICAgdmlydHVh
bCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0IHsgaW1w
b3J0YW50ID0gZmFsc2U7IHJldHVybiAwLjA1ZjsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxs
YmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENh
cHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkTGlzdGVuZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvclByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJpbmcpIGNv
bnN0IHsgfQotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkg
Y29uc3QgeyByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSB7IG1fdXNl
clByZWZlcnJlZExhbmd1YWdlID0gbGFuZ3VhZ2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBsYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgICAgIGlmICht
X3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBsYW5ndWFnZXMuaW5zZXJ0KDAsIG1fdXNlclByZWZlcnJlZExhbmd1YWdlKTsKKyAg
ICAgICAgcmV0dXJuIGxhbmd1YWdlczsKKyAgICB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNw
bGF5TmFtZUZvclRyYWNrKFRleHRUcmFjayogdHJhY2spIGNvbnN0CiAgICAgewpAQCAtNzAsMTMg
Kzc2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRyYWNrLT5sYW5ndWFnZSgpOwogICAg
IH0KIAorICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVz
dGluZ01vZGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlk
ZSkgeyBtX3Rlc3RpbmdNb2RlID0gb3ZlcnJpZGU7IH0KKwogICAgIFBhZ2VHcm91cCogcGFnZUdy
b3VwKCkgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogcHJvdGVjdGVkOgotICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkgOiBtX3BhZ2VHcm91cChncm91cCkgeyB9
CisgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAqIGdyb3VwKQorICAgICAgICA6
IG1fcGFnZUdyb3VwKGdyb3VwKQorICAgICAgICAsIG1fdGVzdGluZ01vZGUoZmFsc2UpCisgICAg
ICAgICwgbV91c2VyUHJlZmVyc0NhcHRpb25zKGZhbHNlKQorICAgIHsKKyAgICB9CiAKIHByaXZh
dGU6CiAgICAgUGFnZUdyb3VwKiBtX3BhZ2VHcm91cDsKKyAgICBTdHJpbmcgbV91c2VyUHJlZmVy
cmVkTGFuZ3VhZ2U7CisgICAgYm9vbCBtX3Rlc3RpbmdNb2RlOworICAgIGJvb2wgbV91c2VyUHJl
ZmVyc0NhcHRpb25zOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5oCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsMTUgKzQxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjKCk7CiAKICNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDkwCisgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VyUHJlZmVyc0NhcHRpb25zKGJvb2wpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29s
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0
T3ZlcnJpZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRMaXN0ZW5lciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JQcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjLm1tCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp+Q2FwdGlvblVzZXJQCiAjaWYgTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFj
Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJp
bGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmls
aXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNl
clByZWZlcnNDYXB0aW9ucygpOwogCiAgICAgcmV0dXJuIE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRT
aG93Q2FwdGlvbnMoa01BQ2FwdGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKTsKQEAgLTExMCw3ICsx
MTAsNyBAQCBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmCiAKIHZvaWQg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHBy
ZWZlcmVuY2UpCiB7Ci0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKKyAg
ICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7CiAg
ICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMocHJl
ZmVyZW5jZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjAsMTYgKzEyMCwxNiBAQCB2
b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFVzZXJQCiAKIGJvb2wgQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKIAotICAgIHJl
dHVybiAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpOworICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIq
IGxpc3RlbmVyKQordm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlckZvclBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqIGxpc3RlbmVyKQogewogICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7
Ci0gICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7CisgICAgICAgIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ3LDEwICsxNDcsMTAgQEAgdm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpyZWdpc3RlcgogICAgIG1fY2FwdGlvblByZWZlcmVu
Y2VDaGFuZ2VMaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTsKIH0KIAotdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQordm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2Vk
Q2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCiB7
CiAgICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsKLSAgICAgICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3MobGlzdGVuZXIpOworICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1bnJl
Z2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIFN0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW8KIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6
OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNj
ZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nl
c3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQ7CkBAIC00MDMsNyArNDAzLDcgQEAgU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwogCiBmbG9hdCBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBpbXBvcnRhbnQpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCisgICAgaWYgKHRlc3RpbmdNb2Rl
KCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7CiAKICAg
ICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CkBAIC00NDcsOSArNDQ3LDkg
QEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1cGRhdGVDYQogICAgICAgICAgICAg
IFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZl
bCwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKLXZvaWQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6c2V0UHJlZmVycmVkTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKSBjb25zdAor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJp
bmcgbGFuZ3VhZ2UpCiB7Ci0gICAgaWYgKCFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpIHsK
KyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7
CiAgICAgICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFByZWZlcnJlZExhbmd1YWdlKGxh
bmd1YWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1OSwyMyArNDU5LDMzIEBAIHZv
aWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0UHJlZmUKIAogVmVjdG9yPFN0cmluZz4g
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKIHsK
LSAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZSA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpOwotICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gb3Zl
cnJpZGU7Ci0KLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICBpZiAo
dGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQogICAgICAgICBy
ZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAKKyAg
ICBWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybUxhbmd1YWdlcyA9IHBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcygpOworICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclByZWZlcnJl
ZExhbmd1YWdlc092ZXJyaWRlKCk7CisgICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgaWYgKHBsYXRmb3JtTGFuZ3VhZ2VzLnNpemUoKSAhPSBvdmVycmlkZS5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb3ZlcnJpZGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChvdmVycmlkZVtpXSAh
PSBwbGF0Zm9ybUxhbmd1YWdlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGU7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2Vz
KEFkb3B0Q0YsIE1BQ2FwdGlvbkFwcGVhcmFuY2VDb3B5U2VsZWN0ZWRMYW5ndWFnZXMoa01BQ2Fw
dGlvbkFwcGVhcmFuY2VEb21haW5Vc2VyKSk7CiAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CiAKICAgICBpZiAoIWxhbmd1YWdlQ291
bnQpCiAgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5n
dWFnZXMoKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFu
Z3VhZ2VDb3VudCk7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
KyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLnJlc2VydmVDYXBhY2l0eShsYW5ndWFnZUNvdW50
ICsgcGxhdGZvcm1MYW5ndWFnZXMuc2l6ZSgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBsYW5ndWFnZUNvdW50OyBpKyspCiAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBw
ZW5kKHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1
YWdlcy5nZXQoKSwgaSkpKTsKIAorICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBs
YXRmb3JtTGFuZ3VhZ2VzKTsKKwogICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAxNDI0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyOCwzMyArNDI4LDYgQEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogUGFnZUdyb3VwOjpj
YXB0aQogCiAgICAgcmV0dXJuIG1fY2FwdGlvblByZWZlcmVuY2VzLmdldCgpOwogfQotICAgIAot
dm9pZCBQYWdlR3JvdXA6OnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxi
YWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAg
IGNhcHRpb25QcmVmZXJlbmNlcygpLT5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MobGlzdGVuZXIpOwotfQotCi12b2lkIFBhZ2VHcm91cDo6dW5yZWdpc3RlckZv
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZExpc3RlbmVyKiBsaXN0ZW5lcikKLXsKLSAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2Vz
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FwdGlvblByZWZlcmVuY2VzKCktPnVucmVnaXN0ZXJG
b3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKLX0KLSAgICAK
LWJvb2wgUGFnZUdyb3VwOjp1c2VyUHJlZmVyc0NhcHRpb25zKCkKLXsKLSAgICByZXR1cm4gY2Fw
dGlvblByZWZlcmVuY2VzKCktPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKLX0KLQotYm9vbCBQYWdl
R3JvdXA6OnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKQotewotICAgIHJldHVybiBjYXB0aW9u
UHJlZmVyZW5jZXMoKS0+dXNlclByZWZlcnNDYXB0aW9ucygpOwotfQotCi1mbG9hdCBQYWdlR3Jv
dXA6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkKLXsKLSAgICByZXR1cm4g
Y2FwdGlvblByZWZlcmVuY2VzKCktPmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9ydGFudCk7Ci19
CiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHJldmlzaW9uIDE0MjQx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSwxMSArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHcm91cFNldHRp
bmdzKiBncm91cFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cFNldHRpbmdzLmdldCgp
OyB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAgIGJvb2wgdXNlclByZWZlcnND
YXB0aW9ucygpOwotICAgICAgICBib29sIHVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKTsKLSAg
ICAgICAgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYpOwotICAgICAgICB2b2lkIHJl
Z2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXIqKTsKLSAgICAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlz
dGVuZXIqKTsKICAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblByZWZlcmVu
Y2VzKCk7CiAjZW5kaWYKIApAQCAtMTIyLDcgKzExNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIHN0cmluZ0hhc2gpOwogICAg
ICAgICB2b2lkIGludmFsaWRhdGVkSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygp
OwotICAKKwogICAgICAgICBTdHJpbmcgbV9uYW1lOwogCiAgICAgICAgIEhhc2hTZXQ8UGFnZSo+
IG1fcGFnZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lv
biAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMCArMTM5LDggQEAgc3RhdGljIFN0cmluZyBiZXN0TWF0Y2hpbmdM
YW5ndWFnZShjb25zdAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1TdHJpbmcgcHJl
ZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0
KQorU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxhbmd1YWdlTGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKQog
ewotICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkTGFuZ3Vh
Z2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBiZXN0TWF0Y2ggPSBiZXN0TWF0Y2hp
bmdMYW5ndWFnZShjYW5vbmljYWxMYW5ndWFnZUlkZW50aWZpZXIocHJlZmVycmVkTGFuZ3VhZ2Vz
W2ldKSwgbGFuZ3VhZ2VMaXN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2Uo
KTsKIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIFZlY3RvcjxTdHJp
bmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwogdm9pZCBvdmVycmlkZVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLVN0cmluZyBwcmVmZXJy
ZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CitTdHJpbmcgcHJlZmVy
cmVkTGFuZ3VhZ2VGcm9tTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMpOwogCiAvLyBUaGUgb2JzZXJ2
ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBzeXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcy4K
IHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbikodm9pZCogY29u
dGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAx
NDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw2ICsxMzIsMTEgQEAKICNpbmNsdWRlICJNb2NrQ0RNLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCkBAIC0yNTQsMTEgKzI1OSwxOCBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQCiAgICAgaWYgKHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSkKICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRQcm9maWxlckVuYWJsZWQoZmFsc2UpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnNldFRlc3RpbmdNb2Rl
KGZhbHNlKTsKKyNlbmRpZgogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVudCkKIHsKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5wYWdl
KCkpCisgICAgICAgIGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2Vz
KCktPnNldFRlc3RpbmdNb2RlKHRydWUpOworI2VuZGlmCiB9CiAKIERvY3VtZW50KiBJbnRlcm5h
bHM6OmNvbnRleHREb2N1bWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJ
KHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHdv
cmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsNyBAQCBfWk42V2ViS2l0MjJXZWJHdGtFeHRlbnNp
b25NYW5hZ2VyNnNoYXJlCiBfWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDExaXNVbmRlclRlc3RFdjsKIF9aTjdXZWJDb3JlN0VsZW1lbnQxNmNyZWF0ZVNoYWRvd1Jvb3RF
Umk7CiBfWk5LN1dlYkNvcmU0S1VSTDZzdHJpbmdFdjsKK19aTjdXZWJDb3JlOVBhZ2VHcm91cDE4
Y2FwdGlvblByZWZlcmVuY2VzRXY7CiAKIGxvY2FsOgogX1oqOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQyNDkxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTMtMDItMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgW01hY10gVHJhY2sgbGFuZ3VhZ2Ugc2VsZWN0aW9uIHNob3VsZCBiZSBz
dGlja3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbDogQWRkZWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIG5l
dyB0ZXN0LCBpdCBkZXBlbmRzIG9uIHRoZSB0cmFjayBtZW51LgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0
aW9uczogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6IERp
dHRvLgorCiAyMDEzLTAyLTExICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1z
dW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJkZW5pbmcuCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVu
Y2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLXVzZXItcHJlZmVyZW5jZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM3IEBACitUZXN0IHRyYWNrIHVzZXIgcHJlZmVyZW5jZXMuCisKKworU2V0IHVzZXIgbGFu
Z3VhZ2VzIHRvOiBbJ25vJywgJ2VzLUVTJywgJ2VuJywgJ2ZyJ10uCisKK1Rlc3QgMTogdHJhY2sg
c2VsZWN0ZWQgYmVjYXVzZSBvZiAnZGVmYXVsdCcgYXR0cmlidXRlCistIGNyZWF0aW5nIHRyYWNr
cyBmb3I6IFtlbixmcixub10uCitFVkVOVChsb2FkKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldC5z
cmNsYW5nID09ICdmcicpIE9LCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0g
JzInKSBPSworCitUZXN0IDI6IHRyYWNrIHNlbGVjdGVkIGJlY2F1c2Ugb2Ygb3JpZ2luYWwgdXNl
ciBwcmVmZXJyZWQgbGFuZ3VhZ2UKKy0gY3JlYXRpbmcgdHJhY2tzIGZvcjogW2ZyLGVuLG5vXS4K
K0VWRU5UKGxvYWQpCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnNyY2xhbmcgPT0gJ25vJykgT0sK
K0VYUEVDVEVEIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnMicpIE9LCisKK1Rlc3QgMzog
cHJlZmVycmVkIGxhbmd1YWdlIGNoYW5nZWQgYnkgc2VsZWN0aW5nIHRyYWNrIGZyb20gbWVudQor
LSBzaG93IGNhcHRpb25zIG1lbnUuCistIGNsaWNrIG9uIG1lbnUgaXRlbSAyLgorRVhQRUNURUQg
KHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9PSAnc2hvd2luZycpIE9LCitFWFBFQ1RFRCAodmlk
ZW8udGV4dFRyYWNrc1swXS5sYW5ndWFnZSA9PSAnZnInKSBPSworLSBjcmVhdGluZyB0cmFja3Mg
Zm9yOiBbbm8sZnIsZW5dLgorRVZFTlQobG9hZCkKK0VYUEVDVEVEIChldmVudC50YXJnZXQuc3Jj
bGFuZyA9PSAnZnInKSBPSworRVhQRUNURUQgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09ICcy
JykgT0sKKworVGVzdCA0OiB0dXJuaW5nIGNhcHRpb25zIG9mZiBmcm9tIG1lbnUgZGlzYWJsZXMg
Y2FwdGlvbnMKKy0gc2hvdyBjYXB0aW9ucyBtZW51LgorLSBjbGljayBvbiBtZW51IGl0ZW0gMC4K
Ky0gY3JlYXRpbmcgdHJhY2tzIGZvcjogW3J1LGpwLGVuXS4KK0VYUEVDVEVEICh2aWRlby50ZXh0
VHJhY2tzWzBdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJh
Y2tzWzFdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tz
WzJdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVy
ZW5jZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5TZWxlY3RpbmcgZnJvbSBhIGxp
c3Qgb2YgdHJhY2tzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWNvbnRy
b2xzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi90cmFja21lbnUtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgdGltZXIgPSBudWxsOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkTGFuZ3VhZ2U7CisgICAgICAgICAgICB2YXIgdGVzdFN0YWdlID0g
MDsKKyAgICAgICAgICAgIHZhciBjYXB0aW9uc0J1dHRvbkNvb3JkaW5hdGVzOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBzaG93Q2FwdGlvbk1lbnUoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXMgPSBtZWRpYUNvbnRyb2xzQnV0dG9uQ29v
cmRpbmF0ZXModmlkZW8sICJ0b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiIpOworICAgICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiLSBzaG93IGNhcHRpb25zIG1lbnUuIik7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2FwdGlvbnNCdXR0b25Db29yZGluYXRl
c1swXSwgY2FwdGlvbnNCdXR0b25Db29yZGluYXRlc1sxXSk7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMTAwKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tNZW51TGlzdCgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEVsZW1lbnQgPSBnZXRU
cmFja0xpc3RFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKCF0cmFja0xpc3RFbGVtZW50
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBUcmFj
ayBsaXN0IHNob3VsZCBoYXZlIGEgPHVsPiB3aXRoIDxsaT4gY2hpbGRyZW4gKE9uZSBvZiB0aGVt
IGlzICJPZmYiKS4KKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0ID0gdHJhY2tMaXN0RWxl
bWVudC5xdWVyeVNlbGVjdG9yKCJ1bCIpOworICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0
KSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3VsZCBub3QgZmluZCBhIGNoaWxk
IHVsIGVsZW1lbnQgaW4gdHJhY2sgbGlzdCBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEl0
ZW1zID0gdHJhY2tMaXN0LnF1ZXJ5U2VsZWN0b3JBbGwoImxpIik7CisgICAgICAgICAgICAgICAg
aWYgKCF0cmFja0xpc3RJdGVtcykgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiQ291
bGQgbm90IGZpbmQgY2hpbGQgbGkgZWxlbWVudHMgaW4gdHJhY2sgbGlzdCBtZW51Iik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJhY2tMaXN0SXRlbXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHNlbGVjdENhcHRpb25NZW51SXRlbShpbmRleCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIi0gY2xpY2sgb24gbWVudSBpdGVtICIgKyBpbmRl
eCArICIuIik7CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEl0ZW1zID0gdHJhY2tNZW51
TGlzdCgpOworICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyYWNrSXRlbSA9IHRyYWNrTGlz
dEl0ZW1zW2luZGV4XTsKKyAgICAgICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gc2VsZWN0
ZWRUcmFja0l0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgdmFy
IHggPSBib3VuZGluZ1JlY3QubGVmdCArIGJvdW5kaW5nUmVjdC53aWR0aCAvIDI7CisgICAgICAg
ICAgICAgICAgdmFyIHkgPSBib3VuZGluZ1JlY3QudG9wICsgYm91bmRpbmdSZWN0LmhlaWdodCAv
IDI7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biB0cmFja0xvYWRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCJFVkVOVChsb2FkKSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQu
dGFyZ2V0LnNyY2xhbmciLCBleHBlY3RlZExhbmd1YWdlKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoImV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5MT0FE
RUQpOworCisgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KG5leHRTdGVwLCAyMDAp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVUcmFja0VsZW1l
bnQobGFuZ3VhZ2UsIGlzRGVmYXVsdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2
YXIgdHJhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpOworICAgICAgICAgICAg
ICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgna2luZCcsICJjYXB0aW9ucyIpOworICAgICAgICAgICAg
ICAgIHRyYWNrLnNyYyA9ICdkYXRhOnRleHQvdnR0LCcrZW5jb2RlVVJJQ29tcG9uZW50KCJXRUJW
VFRcblxuMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMS4wMDBcbkNhcHRpb24gMVxuIik7CisgICAg
ICAgICAgICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdzcmNsYW5nJywgbGFuZ3VhZ2UpOworICAg
ICAgICAgICAgICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgnb25sb2FkJywgJ3RyYWNrTG9hZGVkKCkn
KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICB0
cmFjay5zZXRBdHRyaWJ1dGUoJ2RlZmF1bHQnLCAnZGVmYXVsdCcpOworICAgICAgICAgICAgICAg
IHZpZGVvLmFwcGVuZENoaWxkKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gY3JlYXRlVHJhY2tFbGVtZW50cyhsYW5ndWFnZXMsIGRlZmF1bHRJbmRleCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgndHJhY2snKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBu
ZHggPCB0cmFja3MubGVuZ3RoOyArK25keCkKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucmVt
b3ZlQ2hpbGQodHJhY2tzW25keF0pOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIt
IGNyZWF0aW5nIHRyYWNrcyBmb3I6IFsiICsgbGFuZ3VhZ2VzICsgIl0uIik7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbGFuZ3VhZ2VzLmxlbmd0aDsgKytuZHgpCisg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRyYWNrRWxlbWVudChsYW5ndWFnZXNbbmR4XSwgbmR4
ID09IGRlZmF1bHRJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IG5leHRTdGVwKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICArK3Rlc3RTdGFnZTsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHRlc3RTdGFnZSkgeworICAgICAgICAgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCAxOiB0cmFj
ayBzZWxlY3RlZCBiZWNhdXNlIG9mICdkZWZhdWx0JyBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50cyhbJ2VuJywgJ2ZyJywgJ25vJ10sIDEpOworICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZExhbmd1YWdlID0gJ2ZyJzsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiPGJyPlRlc3QgMjogdHJhY2sgc2VsZWN0ZWQgYmVjYXVzZSBvZiBv
cmlnaW5hbCB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZSIpOworICAgICAgICAgICAgICAgICAgICBj
cmVhdGVUcmFja0VsZW1lbnRzKFsnZnInLCAnZW4nLCAnbm8nXSk7CisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkTGFuZ3VhZ2UgPSAnbm8nOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCI8YnI+VGVzdCAzOiBwcmVmZXJyZWQgbGFuZ3VhZ2UgY2hhbmdlZCBieSBzZWxlY3Rpbmcg
dHJhY2sgZnJvbSBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHNob3dDYXB0aW9uTWVudSgp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKDIpOworICAgICAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSIsICJzaG93
aW5nIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNr
c1swXS5sYW5ndWFnZSIsICJmciIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZExhbmd1
YWdlID0gJ2ZyJzsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50cyhbICdu
bycsICdmcicsICdlbicsXSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5U
ZXN0IDQ6IHR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZyb20gbWVudSBkaXNhYmxlcyBjYXB0aW9ucyIp
OworICAgICAgICAgICAgICAgICAgICBzaG93Q2FwdGlvbk1lbnUoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdENhcHRpb25NZW51SXRlbSgwKTsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRl
VHJhY2tFbGVtZW50cyhbICdydScsICdqcCcsICdlbicsXSk7CisgICAgICAgICAgICAgICAgICAg
IHRpbWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMjUwKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIG5keCA9IDA7IG5keCA8IHZpZGVvLnRleHRUcmFja3MubGVuZ3RoOyArK25keCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1siICsg
bmR4ICsgIl0ubW9kZSIsICJkaXNhYmxlZCIpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVk
aWFGaWxlKCd2aWRlbycsICcuLi9jb250ZW50L3Rlc3QnKTsKKyAgICAgICAgICAgICAgICB2aWRl
by5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIG5leHRTdGVwKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5TZXQgdXNlciBsYW5ndWFnZXMgdG86IFsnbm8nLCAn
ZXMtRVMnLCAnZW4nLCAnZnInXS4iKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNl
clByZWZlcnJlZExhbmd1YWdlcyhbJ25vJywgJ2VzLUVTJywgJ2VuJywgJ2ZyJ10pOworICAgICAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0IHRyYWNrIHVzZXIgcHJlZmVyZW5jZXMuPC9w
PgorICAgICAgICA8dmlkZW8gd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMDAiIGNvbnRyb2xzPgorICAg
ICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNDExKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtMzYwMCw2ICszNjAwLDcgQEAgd2Via2l0Lm9yZy9iLzEwODQyOSBzdmcvcmVw
YWludC9zdmdzdmdlbAogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1j
YXB0aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRp
YS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2tt
ZW51LWxvY2FsaXplZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3Ry
YWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2Iv
OTI4MzUgWyBBbmRyb2lkIE1hYyBXaW4gRGVidWcgXSBzdmcvYXMtYmFja2dyb3VuZC1pbWFnZS9z
dmctYXMtYmFja2dyb3VuZC01Lmh0bWwgWyBQYXNzIFNsb3cgXQogCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNDExKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAg
LTE3MjYsNiArMTcyNiw3IEBAIHdlYmtpdC5vcmcvYi8xMDI0OTMgZmFzdC9ldmVudHMvbW91c2Ut
Y3UKIHdlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJh
Y2ttZW51Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29u
dHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6
ZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS90cmFjay90cmFjay11
c2VyLXByZWZlcmVuY2VzLmh0bWwgWyBTa2lwIF0KIAogIyBGYWlscyB1bnRpbCB3ZSBlbmFibGUg
dGhlIFJlc291cmNlIFRpbWluZyBBUEkuCiB3ZWJraXQub3JnL2IvNjExMzggaHR0cC90ZXN0cy93
M2Mvd2VicGVyZi9zdWJtaXNzaW9uL3Jlc291cmNlLXRpbWluZyBbIFNraXAgXQpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE0MjQxMSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNv
cHkpCkBAIC03NzUsNiArNzc1LDcgQEAgQnVnKEdUSykgZmFzdC9tZWRpYS9wcmludC1yZXN0b3Jl
cy1wcmV2aQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRl
by1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxv
Y2FsaXplZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3RyYWNrL3Ry
YWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTA3MTk0
IHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtp
dC5vcmcvYi8xMDcxOTQgc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJz
Lmh0bWwgWyBUaW1lb3V0IF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBl
Y3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucwkocmV2aXNpb24gMTQyNDExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjUyOCw2ICsyNTI4LDcgQEAgd2Via2l0
Lm9yZy9iLzEwMDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZAogd2Via2l0Lm9yZy9iLzEwMTY3MCBt
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQogd2Vi
a2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUt
c29ydGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29u
dHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMTAxNjcwIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNr
aXAgXQogCiAjIE5ldywgYnV0IGZhaWxpbmcgdGVzdAogd2Via2l0Lm9yZy9iLzEwMTAzNSBmYXN0
L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWltYWdlLWRvY3VtZW50Lmh0bWwKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDI0MTEpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5
KQpAQCAtMjUyNSw2ICsyNTI1LDcgQEAgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1z
bmFwLXRvLQogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sCiAK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQ3NworbWVkaWEv
dHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCiBtZWRpYS92aWRlby1jb250cm9scy1j
YXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLmh0bWwKIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNh
cHRpb25zLXRyYWNrbWVudS1zb3J0ZWQuaHRtbAogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlv
bnMtdHJhY2ttZW51Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187671</attachid>
            <date>2013-02-11 14:17:06 -0800</date>
            <delta_ts>2013-02-11 22:33:33 -0800</delta_ts>
            <desc>Export Page::initGroup.</desc>
            <filename>patch_12.txt</filename>
            <type>text/plain</type>
            <size>38829</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0MjQ5
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAy
LTExICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtN
YWNdIFRyYWNrIGxhbmd1YWdlIHNlbGVjdGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6IEV4cG9ydCBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcyBhbmQg
UGFnZTo6aW5pdEdyb3VwLgorCiAyMDEzLTAyLTExICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICAqIFNvdXJjZS9XZWJDb3JlOiBNb2RpZmllZCBwcm9wZXJ0
eSBzdm46aWdub3JlLCBhZGRpbmcgR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0MjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAyLTExICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFRyYWNrIGxhbmd1YWdlIHNlbGVj
dGlvbiBzaG91bGQgYmUgc3RpY2t5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk0NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDaG9vc2luZyBhIHRleHQgdHJhY2sgZnJvbSB0aGUgY2FwdGlvbiBtZW51
IHNob3VsZCBtYWtlIHRoYXQgdHJhY2sncyBsYW5ndWFnZSB0aGUKKyAgICAgICAgcHJlZmVycmVk
IGNhcHRpb24gbGFuZ3VhZ2UuIFR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZyb20gdGhlIG1lbnUgc2hv
dWxkIGRpc2FibGUgY2FwdGlvbnMKKyAgICAgICAgaW4gdmlkZW9zIGxvYWRlZCBzdWJzZXF1ZW50
bHkuCisKKyAgICAgICAgT1MgWCBoYXMgc3lzdGVtIHN1cHBvcnQgZm9yIHRoZXNlIHNldHRpbmdz
LCBzbyBjaGFuZ2VzIG1hZGUgYnkgRFJUIHNob3VsZCBub3QgY2hhbmdlIHRoZQorICAgICAgICBz
ZXR0aW5ncyBvbiB0aGUgdXNlcidzIHN5c3RlbS4gQWRkIHN1cHBvcnQgZm9yIGFsbCBvdGhlciBw
b3J0cyBpbiBEUlQgb25seS4KKworICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFjay11c2Vy
LXByZWZlcmVuY2VzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgUGFn
ZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KTogVXNlIHBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF0dGFjaCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGV0YWNoKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91
cCk6IERpdHRvLiBVcGRhdGUgZm9yIAorICAgICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VGcm9t
TGlzdCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVU
cmFja0F0SW5kZXgpOiBTZXQgdXNlciBwcmVmcyBmb3IgY2FwdGlvbnMgdmlzaWJsZSBhbmQKKyAg
ICAgICAgICAgIGNhcHRpb24gbGFuZ3VhZ2UgYXMgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOiBSZW1vdmUgdW5uZWVkZWQgY29tbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKTogIFVzZSBwYWdl
KCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkuCisKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
c0FwcGxlOjpjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCk6IFVwZGF0ZSBjYXB0aW9uIG1lbnUg
YnV0dG9uIHZpc2liaWxpdHkuCisKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVm
ZXJzQ2FwdGlvbnMpOiBTdXBwb3J0ICJ0ZXN0aW5nIiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6
Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cmVnaXN0ZXJGb3JQcmVm
ZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFj
a3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNl
dFByZWZlcnJlZExhbmd1YWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpwcmVmZXJyZWRMYW5ndWFnZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRlc3RpbmdNb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRUZXN0aW5nTW9kZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlcyk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6dXNlclByZWZlcnND
YXB0aW9ucyk6IFN1cHBvcnQgInRlc3RpbmciIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRVc2VyUHJlZmVyc0NhcHRpb25zKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VySGFzQ2FwdGlv
blByZWZlcmVuY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzTWFjOjpyZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyk6IENoYW5n
ZSBuYW1lIGZyb20KKyAgICAgICAgICAgIHJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hh
bmdlZENhbGxiYWNrcy4gU3VwcG9ydCAidGVzdGluZyIgbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MpOiAgQ2hhbmdlIG5hbWUgZnJvbQorICAgICAgICAgICAgdW5yZWdpc3RlckZv
ckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MuIFN1cHBvcnQgInRlc3RpbmciIG1v
ZGUuCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9u
c1N0eWxlU2hlZXRPdmVycmlkZSk6IFN1cHBvcnQgInRlc3RpbmciIG1vZGUuCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0
UHJlZmVycmVkTGFuZ3VhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNYWM6OnByZWZlcnJlZExhbmd1YWdlcyk6IERpdHRvLiBSZXR1cm4gdGhlIHBs
YXRmb3JtIG92ZXJyaWRlIHdoZW4gc2V0LgorCisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZWdpc3RlckZvckNhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRDYWxsYmFja3MpOiBSZW1vdmUgYmVjYXVzZSBpdCBpcyBhbHJlYWR5CisgICAg
ICAgICAgICBhdmFpbGFibGUgZnJvbSB0aGUgY2FwdGlvbiBwcmVmZXJlbmNlIG9iamVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6
dXNlclByZWZlcnNDYXB0aW9ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3Vw
Ojp1c2VySGFzQ2FwdGlvblByZWZlcmVuY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlR3JvdXA6OmNhcHRpb25Gb250U2l6ZVNjYWxlKTogRGl0dG8uCisgICAgICAgICogcGFnZS9Q
YWdlR3JvdXAuaDoKKworICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QpOiBUYWtlIHRoZSBsaXN0IG9mIHBy
ZWZlcnJlZCBsYW5ndWFnZXMgaW5zdGVhZCBvZiBhc3N1bWluZworICAgICAgICAgICAgdGhlIHN5
c3RlbSBsaXN0LgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUpOiBEaXNhYmxlIGNhcHRpb24gdGVzdGluZyBtb2RlLgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOiBFbmFibGUgY2FwdGlvbiB0ZXN0aW5n
IG1vZGUgc28gdGhlIHVzZXIncyBzeXN0ZW0KKyAgICAgICAgICAgIHByZWZlcmVuY2VzIGFyZSBu
b3QgbW9kaWZpZWQuCisKIDIwMTMtMDItMTEgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1lbGluZTogaW52YWxpZGF0ZSBh
bmQgZm9yY2UgbG9jYXRpb25zIGFyZSBzYW1lIGZvciBMYXlvdXQgcmVjb3JkcyBjYXVzZWQgYnkg
c3R5bGUgcmVjYWxjdWxhaXRvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE0
MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzcyLDMgKzI3NzIsNyBAQCBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMy
NWFyCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIF9fWk43V2ViQ29yZTNDRE0xOHJl
Z2lzdGVyQ0RNRmFjdG9yeUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5Q0RNUHJpdmF0ZUludGVy
ZmFjZUVFRVBTMF9FUEZiUktOUzFfNlN0cmluZ0VFCiAjZW5kaWYKKworI2lmIEVOQUJMRShWSURF
T19UUkFDSykKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAxOGNhcHRpb25QcmVmZXJlbmNlc0V2Cisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDkgKzMxNyw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhU
TUxNZWRpYUVsZW1lbnQoY29uc3QKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAo
ZG9jdW1lbnQtPnBhZ2UoKSkgewotICAgICAgICBQYWdlR3JvdXAmIGdyb3VwID0gZG9jdW1lbnQt
PnBhZ2UoKS0+Z3JvdXAoKTsKLSAgICAgICAgaWYgKGdyb3VwLnVzZXJIYXNDYXB0aW9uUHJlZmVy
ZW5jZXMoKSkKLSAgICAgICAgICAgIG1fZGlzYWJsZUNhcHRpb25zID0gIWdyb3VwLnVzZXJQcmVm
ZXJzQ2FwdGlvbnMoKTsKKyAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2FwdGlvblBy
ZWZlcmVuY2VzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMo
KTsKKyAgICAgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNlcy0+dXNlckhhc0NhcHRpb25QcmVmZXJl
bmNlcygpKQorICAgICAgICAgICAgbV9kaXNhYmxlQ2FwdGlvbnMgPSAhY2FwdGlvblByZWZlcmVu
Y2VzLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC01OTEsNyAr
NTkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdHRhY2goKQogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIGRvY3VtZW50
KCktPnBhZ2UoKS0+Z3JvdXAoKS5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRD
YWxsYmFja3ModGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0
aW9uUHJlZmVyZW5jZXMoKS0+cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3Mo
dGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZGV0YWNoKCkKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGRvY3Vt
ZW50KCktPnBhZ2UoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLnVucmVn
aXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOworICAgICAg
ICBkb2N1bWVudCgpLT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnVucmVn
aXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAjZW5kaWYKICAgICBI
VE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CkBAIC0yOTkyLDggKzI5OTIsOCBAQCBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVzZXJQcmVmZXJzQ2FwdGlvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBQYWdlR3JvdXAmIGdyb3VwID0gcGFnZS0+Z3JvdXAoKTsKLSAg
ICByZXR1cm4gZ3JvdXAudXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpICYmIGdyb3VwLnVzZXJQ
cmVmZXJzQ2FwdGlvbnMoKTsKKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKiBjYXB0aW9uUHJl
ZmVyZW5jZXMgPSBwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOworICAgIHJldHVy
biBjYXB0aW9uUHJlZmVyZW5jZXMtPnVzZXJIYXNDYXB0aW9uUHJlZmVyZW5jZXMoKSAmJiBjYXB0
aW9uUHJlZmVyZW5jZXMtPnVzZXJQcmVmZXJzQ2FwdGlvbnMoKTsKIH0KIAogYm9vbCBIVE1MTWVk
aWFFbGVtZW50Ojp1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZyBraW5kKSBj
b25zdApAQCAtMzAxOSwxNSArMzAxOSwxNSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZp
Z3VyZVRleHRUcmFjCiAgICAgQVNTRVJUKGdyb3VwLnRyYWNrcy5zaXplKCkpOwogCiAgICAgU3Ry
aW5nIGJlc3RNYXRjaGluZ0xhbmd1YWdlOwotICAgIGlmIChncm91cC5oYXNTcmNMYW5nKSB7Ci0g
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKLSAgICAgICAgbGFuZ3VhZ2VzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZ3JvdXAudHJhY2tzLnNpemUoKSk7CisgICAgaWYgKGdyb3VwLmhh
c1NyY0xhbmcgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHRyYWNrTGFuZ3VhZ2VzOworICAgICAgICB0cmFja0xhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGdyb3VwLnRyYWNrcy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGdyb3VwLnRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nIHNyY0xh
bmd1YWdlID0gZ3JvdXAudHJhY2tzW2ldLT5sYW5ndWFnZSgpOwogICAgICAgICAgICAgaWYgKHNy
Y0xhbmd1YWdlLmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGxhbmd1YWdlcy5hcHBlbmQoc3Jj
TGFuZ3VhZ2UpOworICAgICAgICAgICAgICAgIHRyYWNrTGFuZ3VhZ2VzLmFwcGVuZChzcmNMYW5n
dWFnZSk7CiAgICAgICAgIH0KLSAgICAgICAgYmVzdE1hdGNoaW5nTGFuZ3VhZ2UgPSBwcmVmZXJy
ZWRMYW5ndWFnZUZyb21MaXN0KGxhbmd1YWdlcyk7CisgICAgICAgIGJlc3RNYXRjaGluZ0xhbmd1
YWdlID0gcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdCh0cmFja0xhbmd1YWdlcywgZG9jdW1lbnQo
KS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5wcmVmZXJyZWRMYW5ndWFn
ZXMoKSk7CiAgICAgfQogCiAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIHRyYWNrIGluIHRoZSBncm91
cCB0aGF0IHNob3VsZCBiZSBlbmFibGVkIChpZiBhbnkpLgpAQCAtMzA4NSwxMCArMzA4NSwxNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVRyYWNrQXRJbmRlCiAgICAgaWYgKCF0cmFj
a0xpc3QgfHwgIXRyYWNrTGlzdC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCktPnBh
Z2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKSA6
IDA7CisgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNlcykKKyAgICAgICAgY2FwdGlvblByZWZlcmVu
Y2VzLT5zZXRVc2VyUHJlZmVyc0NhcHRpb25zKGluZGV4ICE9IHRleHRUcmFja3NPZmZJbmRleCgp
KTsKKwogICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBp
IDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IHRyYWNrTGlzdC0+
aXRlbShpKTsKLSAgICAgICAgaWYgKGkgPT0gaW5kZXgpCisgICAgICAgIGlmIChpID09IGluZGV4
KSB7CiAgICAgICAgICAgICB0cmFjay0+c2V0TW9kZShUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3Jk
KCkpOworICAgICAgICAgICAgaWYgKGNhcHRpb25QcmVmZXJlbmNlcyAmJiB0cmFjay0+bGFuZ3Vh
Z2UoKS5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBjYXB0aW9uUHJlZmVyZW5jZXMtPnNldFBy
ZWZlcnJlZExhbmd1YWdlKHRyYWNrLT5sYW5ndWFnZSgpKTsKKyAgICAgICAgfQogICAgICAgICBl
bHNlIGlmIChleGNsdXNpdmUgfHwgaW5kZXggPT0gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
c09mZkluZGV4KCkpCiAgICAgICAgICAgICB0cmFjay0+c2V0TW9kZShUZXh0VHJhY2s6OmRpc2Fi
bGVkS2V5d29yZCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAxNDI0MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0Miw5ICs3NDIsNiBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRp
b25zVHJhY2tMaXN0CiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBB
ZGQgbW9kaWZpZXIga2V5IGZvciBleGNsdXNpdml0eSBvdmVycmlkZS4KLSAgICAgICAgLy8gaHR0
cDovL3dlYmtpdC5vcmcvYi8xMDMzNjEKLQogICAgICAgICBOb2RlKiB0YXJnZXQgPSBldmVudC0+
dGFyZ2V0KCktPnRvTm9kZSgpOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pc0Vs
ZW1lbnROb2RlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzI5LDcgKzEzMjYsNyBAQCB2
b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lCiAgICAgZmxvYXQgc21hbGxl
c3REaW1lbnNpb24gPSBzdGQ6Om1pbihtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgp
LCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLndpZHRoKCkpOwogCiAgICAgYm9vbCBpbXBvcnRh
bnQ7Ci0gICAgZmxvYXQgZm9udFNpemUgPSBzbWFsbGVzdERpbWVuc2lvbiAqIChkb2N1bWVudCgp
LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlvbkZvbnRTaXplU2NhbGUoaW1wb3J0YW50KSk7CisgICAg
ZmxvYXQgZm9udFNpemUgPSBzbWFsbGVzdERpbWVuc2lvbiAqIChkb2N1bWVudCgpLT5wYWdlKCkt
Pmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPmNhcHRpb25Gb250U2l6ZVNjYWxlKGltcG9y
dGFudCkpOwogICAgIGlmIChmb250U2l6ZSAhPSBtX2ZvbnRTaXplKSB7CiAgICAgICAgIG1fZm9u
dFNpemUgPSBmb250U2l6ZTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihmb250U2l6ZSkgKyAicHgiLCBpbXBvcnRhbnQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwCShyZXZpc2lvbiAxNDI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsNiArNTAwLDEy
IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpjbG9zZWRDYXB0aW9uVHIKIHsKICAgICBpZiAo
bV9jbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCkKICAgICAgICAgbV9jbG9zZWRDYXB0aW9uc1RyYWNr
TGlzdC0+cmVzZXRUcmFja0xpc3RNZW51KCk7CisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5oYXNDbG9zZWRDYXB0
aW9ucygpKQorICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+c2hvdygp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
LT5oaWRlKCk7CisgICAgfQogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE2
ICs1MCwyMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlcz4gY3JlYXRlKFBhZ2VHcm91cCogZ3JvdXApIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKGdyb3VwKSk7IH0KICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNl
clByZWZlcmVuY2VzKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVm
ZXJzQ2FwdGlvbnMoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0aW9uUHJl
ZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCB1c2Vy
UHJlZmVyc0NhcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0aW5nTW9kZSA/IG1fdXNlclBy
ZWZlcnNDYXB0aW9ucyA6IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJz
Q2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKSB7IG1fdXNlclByZWZlcnNDYXB0aW9ucyA9IHByZWZl
cmVuY2U7IH0KICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGlt
cG9ydGFudCkgY29uc3QgeyBpbXBvcnRhbnQgPSBmYWxzZTsgcmV0dXJuIDAuMDVmOyB9CiAgICAg
dmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVy
biBlbXB0eVN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yQ2FwdGlvblBy
ZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXIqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tz
KENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRMaXN0ZW5lciopIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJl
ZExhbmd1YWdlKFN0cmluZykgY29uc3QgeyB9Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBw
cmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJp
bmcgbGFuZ3VhZ2UpIHsgbV91c2VyUHJlZmVycmVkTGFuZ3VhZ2UgPSBsYW5ndWFnZTsgfQorICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKTsKKyAgICAgICAgaWYgKG1fdGVzdGluZ01vZGUgJiYgIW1fdXNlclByZWZlcnJlZExhbmd1
YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGxhbmd1YWdlcy5pbnNlcnQoMCwgbV91c2VyUHJl
ZmVycmVkTGFuZ3VhZ2UpOworICAgICAgICByZXR1cm4gbGFuZ3VhZ2VzOworICAgIH0KIAogICAg
IHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykgY29u
c3QKICAgICB7CkBAIC03MCwxMyArNzYsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJh
Y2stPmxhbmd1YWdlKCk7CiAgICAgfQogCisgICAgdmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXN0aW5nTW9kZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUZXN0
aW5nTW9kZShib29sIG92ZXJyaWRlKSB7IG1fdGVzdGluZ01vZGUgPSBvdmVycmlkZTsgfQorCiAg
ICAgUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAqIGdyb3VwKSA6IG1f
cGFnZUdyb3VwKGdyb3VwKSB7IH0KKyAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91
cCogZ3JvdXApCisgICAgICAgIDogbV9wYWdlR3JvdXAoZ3JvdXApCisgICAgICAgICwgbV90ZXN0
aW5nTW9kZShmYWxzZSkKKyAgICAgICAgLCBtX3VzZXJQcmVmZXJzQ2FwdGlvbnMoZmFsc2UpCisg
ICAgeworICAgIH0KIAogcHJpdmF0ZToKICAgICBQYWdlR3JvdXAqIG1fcGFnZUdyb3VwOworICAg
IFN0cmluZyBtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZTsKKyAgICBib29sIG1fdGVzdGluZ01vZGU7
CisgICAgYm9vbCBtX3VzZXJQcmVmZXJzQ2FwdGlvbnM7CiB9OwogICAgIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgJKHJldmlz
aW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNSArNDEsMTUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMoKTsKIAogI2lmIE1BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKKyAgICB2aXJ0dWFsIGJvb2wgdXNlckhhc0NhcHRpb25Q
cmVmZXJlbmNlcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVy
c0NhcHRpb25zKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVm
ZXJzQ2FwdGlvbnMoYm9vbCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVzZXJIYXNDYXB0
aW9uUHJlZmVyZW5jZXMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRp
b25Gb250U2l6ZVNjYWxlKGJvb2wmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRp
b25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkTGlzdGVuZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckZvclByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
TGlzdGVuZXIqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRMYW5n
dWFnZShTdHJpbmcpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJy
ZWRMYW5ndWFnZShTdHJpbmcpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4g
cHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMubW0JKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDcgKzEwMiw3IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6On5DYXB0aW9uVXNl
clAKICNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiBib29sIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBjb25zdAogewotICAg
IGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQorICAgIGlmICh0ZXN0aW5nTW9kZSgp
IHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zKCk7CiAKICAgICByZXR1cm4gTUFD
YXB0aW9uQXBwZWFyYW5jZUdldFNob3dDYXB0aW9ucyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFp
blVzZXIpOwpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01h
Yzo6dXNlclByZWYKIAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRVc2VyUHJl
ZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJp
bGl0eUxpYnJhcnkoKSkgeworICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2li
aWxpdHlMaWJyYXJ5KCkpIHsKICAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNl
clByZWZlcnNDYXB0aW9ucyhwcmVmZXJlbmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEyMCwxNiArMTIwLDE2IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6c2V0VXNl
clAKIAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1c2VySGFzQ2FwdGlvblByZWZl
cmVuY2VzKCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkK
KyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQog
ICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlckhhc0NhcHRpb25QcmVm
ZXJlbmNlcygpOwogCi0gICAgcmV0dXJuICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6cmVn
aXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJl
bmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWM6OnJlZ2lzdGVyRm9yUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFNZWRpYUFjY2Vz
c2liaWxpdHlMaWJyYXJ5KCkpIHsKLSAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cmVn
aXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKGxpc3RlbmVyKTsKKyAg
ICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6cmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5n
ZWRDYWxsYmFja3MobGlzdGVuZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDcs
MTAgKzE0NywxMCBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnJlZ2lzdGVyCiAg
ICAgbV9jYXB0aW9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVycy5hZGQobGlzdGVuZXIpOwogfQog
Ci12b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJGb3JDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
ciogbGlzdGVuZXIpCit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVucmVnaXN0ZXJG
b3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3MoQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZExp
c3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnko
KSkgewotICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1bnJlZ2lzdGVyRm9yQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7CisgICAgICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OnVucmVnaXN0ZXJGb3JQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3Mo
bGlzdGVuZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTgsNyArMzU4LDcgQEAg
U3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwogCiBTdHJpbmcgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdAog
ewotICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQorICAgIGlmICh0ZXN0aW5n
TW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKQEAgLTQwMyw3ICs0
MDMsNyBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvCiAKIGZsb2F0
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmIGlt
cG9ydGFudCkgY29uc3QKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkK
KyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQog
ICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbkZvbnRTaXplU2Nh
bGUoaW1wb3J0YW50KTsKIAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlv
cjsKQEAgLTQ0Nyw5ICs0NDcsOSBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnVw
ZGF0ZUNhCiAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMs
IFVzZXJTdHlsZUF1dGhvckxldmVsLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIAot
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShTdHJp
bmcgbGFuZ3VhZ2UpIGNvbnN0Cit2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OnNldFBy
ZWZlcnJlZExhbmd1YWdlKFN0cmluZyBsYW5ndWFnZSkKIHsKLSAgICBpZiAoIU1lZGlhQWNjZXNz
aWJpbGl0eUxpYnJhcnkoKSkgeworICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vz
c2liaWxpdHlMaWJyYXJ5KCkpIHsKICAgICAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0
UHJlZmVycmVkTGFuZ3VhZ2UobGFuZ3VhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDU5LDIzICs0NTksMzMgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpzZXRQcmVm
ZQogCiBWZWN0b3I8U3RyaW5nPiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpwcmVmZXJyZWRM
YW5ndWFnZXMoKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJyaWRlID0gdXNlclBy
ZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7Ci0gICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLQotICAgIGlmICghTWVkaWFBY2Nlc3NpYmlsaXR5
TGlicmFyeSgpKQorICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlM
aWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKIAorICAgIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtTGFuZ3VhZ2VzID0g
cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgVmVjdG9yPFN0cmluZz4gb3Zl
cnJpZGUgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJy
aWRlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAocGxhdGZvcm1MYW5ndWFnZXMuc2l6ZSgpICE9
IG92ZXJyaWRlLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBvdmVycmlkZTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdmVycmlkZS5zaXplKCk7IGkrKykgeworICAgICAgICAg
ICAgaWYgKG92ZXJyaWRlW2ldICE9IHBsYXRmb3JtTGFuZ3VhZ2VzW2ldKQorICAgICAgICAgICAg
ICAgIHJldHVybiBvdmVycmlkZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgTUFDYXB0aW9uQXBwZWFyYW5jZUNvcHlTZWxl
Y3RlZExhbmd1YWdlcyhrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIpKTsKICAgICBDRklu
ZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzLmdldCgpKTsKIAog
ICAgIGlmICghbGFuZ3VhZ2VDb3VudCkKICAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gdXNlclBy
ZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZUNvdW50KTsKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMucmVzZXJ2ZUNh
cGFjaXR5KGxhbmd1YWdlQ291bnQgKyBwbGF0Zm9ybUxhbmd1YWdlcy5zaXplKCkpOwogICAgIGZv
ciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdlQ291bnQ7IGkrKykKICAgICAgICAgdXNlclBy
ZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOwogCisgICAgdXNlclByZWZlcnJl
ZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZXMpOworCiAgICAgcmV0dXJuIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDMzICs0MjgsNiBAQCBDYXB0aW9uVXNlclByZWZl
cmVuY2VzKiBQYWdlR3JvdXA6OmNhcHRpCiAKICAgICByZXR1cm4gbV9jYXB0aW9uUHJlZmVyZW5j
ZXMuZ2V0KCk7CiB9Ci0gICAgCi12b2lkIFBhZ2VHcm91cDo6cmVnaXN0ZXJGb3JDYXB0aW9uUHJl
ZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5l
ciogbGlzdGVuZXIpCi17Ci0gICAgY2FwdGlvblByZWZlcmVuY2VzKCktPnJlZ2lzdGVyRm9yQ2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhsaXN0ZW5lcik7Ci19Ci0KLXZvaWQgUGFn
ZUdyb3VwOjp1bnJlZ2lzdGVyRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZENhbGxiYWNrcyhD
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAgIGlmICgh
bV9jYXB0aW9uUHJlZmVyZW5jZXMpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXB0aW9uUHJlZmVy
ZW5jZXMoKS0+dW5yZWdpc3RlckZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFja3Mo
bGlzdGVuZXIpOwotfQotICAgIAotYm9vbCBQYWdlR3JvdXA6OnVzZXJQcmVmZXJzQ2FwdGlvbnMo
KQotewotICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMoKS0+dXNlclByZWZlcnNDYXB0aW9u
cygpOwotfQotCi1ib29sIFBhZ2VHcm91cDo6dXNlckhhc0NhcHRpb25QcmVmZXJlbmNlcygpCi17
Ci0gICAgcmV0dXJuIGNhcHRpb25QcmVmZXJlbmNlcygpLT51c2VyUHJlZmVyc0NhcHRpb25zKCk7
Ci19Ci0KLWZsb2F0IFBhZ2VHcm91cDo6Y2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYgaW1wb3J0
YW50KQotewotICAgIHJldHVybiBjYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2FwdGlvbkZvbnRTaXpl
U2NhbGUoaW1wb3J0YW50KTsKLX0KIAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuaAkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDExICsxMDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBt
X2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAg
ICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCk7Ci0gICAgICAgIGJvb2wgdXNlckhhc0NhcHRp
b25QcmVmZXJlbmNlcygpOwotICAgICAgICBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29s
Jik7Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2Fs
bGJhY2tzKENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopOwotICAgICAgICB2b2lk
IHVucmVnaXN0ZXJGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2tzKENhcHRpb25Q
cmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lciopOwogICAgICAgICBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMoKTsKICNlbmRpZgogCkBAIC0xMjIsNyArMTE3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoTGlua0hh
c2ggc3RyaW5nSGFzaCk7CiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZWRJbmplY3RlZFN0eWxlU2hl
ZXRDYWNoZUluQWxsRnJhbWVzKCk7Ci0gIAorCiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAKICAg
ICAgICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YW5ndWFnZS5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDEwICsxMzksOCBAQCBzdGF0aWMg
U3RyaW5nIGJlc3RNYXRjaGluZ0xhbmd1YWdlKGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiB9CiAKLVN0cmluZyBwcmVmZXJyZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsYW5ndWFnZUxpc3QpCitTdHJpbmcgcHJlZmVycmVkTGFuZ3VhZ2VGcm9tTGlzdChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VMaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiBw
cmVmZXJyZWRMYW5ndWFnZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3Vh
Z2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcmVmZXJyZWRMYW5ndWFnZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGJl
c3RNYXRjaCA9IGJlc3RNYXRjaGluZ0xhbmd1YWdlKGNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmll
cihwcmVmZXJyZWRMYW5ndWFnZXNbaV0pLCBsYW5ndWFnZUxpc3QpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgU3Ry
aW5nIGRlZmF1bHRMYW5ndWFnZSgpOwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1
YWdlcygpOwogVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7
CiB2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYpOwotU3RyaW5nIHByZWZlcnJlZExhbmd1YWdlRnJvbUxpc3QoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKK1N0cmluZyBwcmVmZXJyZWRMYW5ndWFnZUZyb21MaXN0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBsYW5ndWFnZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdl
cyk7CiAKIC8vIFRoZSBvYnNlcnZlciBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHN5c3Rl
bSBsYW5ndWFnZSBjaGFuZ2VzLgogdHlwZWRlZiB2b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
ckZ1bmN0aW9uKSh2b2lkKiBjb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAJKHJldmlzaW9uIDE0MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxMSBAQAogI2luY2x1ZGUg
Ik1vY2tDRE0uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUg
IkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoUEFHRV9QT1BVUCkKQEAgLTI1
NCwxMSArMjU5LDE4IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFAK
ICAgICBpZiAocGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQogICAgICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPnNldFByb2ZpbGVyRW5hYmxlZChmYWxzZSk7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5j
ZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOworI2VuZGlmCiB9CiAKIEludGVybmFsczo6SW50
ZXJuYWxzKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKGRvY3VtZW50KQogeworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoZG9jdW1l
bnQgJiYgZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAo
KS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUodHJ1ZSk7CisjZW5kaWYKIH0K
IAogRG9jdW1lbnQqIEludGVybmFsczo6Y29udGV4dERvY3VtZW50KCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTQyNDExKQorKysgU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw4IEBAIF9aTjZX
ZWJLaXQyMldlYkd0a0V4dGVuc2lvbk1hbmFnZXI2c2hhcmUKIF9aTjdXZWJDb3JlMjhJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsMTFpc1VuZGVyVGVzdEV2OwogX1pON1dlYkNvcmU3RWxlbWVu
dDE2Y3JlYXRlU2hhZG93Um9vdEVSaTsKIF9aTks3V2ViQ29yZTRLVVJMNnN0cmluZ0V2OworX1pO
N1dlYkNvcmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdjsKK19aTjdXZWJDb3JlNFBh
Z2U5aW5pdEdyb3VwRXY7CiAKIGxvY2FsOgogX1oqOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQyNDkx
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTMtMDItMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gVHJhY2sgbGFuZ3VhZ2Ugc2VsZWN0aW9uIHNob3VsZCBiZSBzdGlja3kK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTQ2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbDogQWRkZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIG5ldyB0ZXN0
LCBpdCBkZXBlbmRzIG9uIHRoZSB0cmFjayBtZW51LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9uczogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6IERpdHRvLgor
CiAyMDEzLTAyLTExICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay11c2VyLXByZWZlcmVuY2VzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNr
LXVzZXItcHJlZmVyZW5jZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3
IEBACitUZXN0IHRyYWNrIHVzZXIgcHJlZmVyZW5jZXMuCisKKworU2V0IHVzZXIgbGFuZ3VhZ2Vz
IHRvOiBbJ25vJywgJ2VzLUVTJywgJ2VuJywgJ2ZyJ10uCisKK1Rlc3QgMTogdHJhY2sgc2VsZWN0
ZWQgYmVjYXVzZSBvZiAnZGVmYXVsdCcgYXR0cmlidXRlCistIGNyZWF0aW5nIHRyYWNrcyBmb3I6
IFtlbixmcixub10uCitFVkVOVChsb2FkKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldC5zcmNsYW5n
ID09ICdmcicpIE9LCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT0gJzInKSBP
SworCitUZXN0IDI6IHRyYWNrIHNlbGVjdGVkIGJlY2F1c2Ugb2Ygb3JpZ2luYWwgdXNlciBwcmVm
ZXJyZWQgbGFuZ3VhZ2UKKy0gY3JlYXRpbmcgdHJhY2tzIGZvcjogW2ZyLGVuLG5vXS4KK0VWRU5U
KGxvYWQpCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0LnNyY2xhbmcgPT0gJ25vJykgT0sKK0VYUEVD
VEVEIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnMicpIE9LCisKK1Rlc3QgMzogcHJlZmVy
cmVkIGxhbmd1YWdlIGNoYW5nZWQgYnkgc2VsZWN0aW5nIHRyYWNrIGZyb20gbWVudQorLSBzaG93
IGNhcHRpb25zIG1lbnUuCistIGNsaWNrIG9uIG1lbnUgaXRlbSAyLgorRVhQRUNURUQgKHZpZGVv
LnRleHRUcmFja3NbMF0ubW9kZSA9PSAnc2hvd2luZycpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4
dFRyYWNrc1swXS5sYW5ndWFnZSA9PSAnZnInKSBPSworLSBjcmVhdGluZyB0cmFja3MgZm9yOiBb
bm8sZnIsZW5dLgorRVZFTlQobG9hZCkKK0VYUEVDVEVEIChldmVudC50YXJnZXQuc3JjbGFuZyA9
PSAnZnInKSBPSworRVhQRUNURUQgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09ICcyJykgT0sK
KworVGVzdCA0OiB0dXJuaW5nIGNhcHRpb25zIG9mZiBmcm9tIG1lbnUgZGlzYWJsZXMgY2FwdGlv
bnMKKy0gc2hvdyBjYXB0aW9ucyBtZW51LgorLSBjbGljayBvbiBtZW51IGl0ZW0gMC4KKy0gY3Jl
YXRpbmcgdHJhY2tzIGZvcjogW3J1LGpwLGVuXS4KK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tz
WzBdLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzFd
Lm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzJdLm1v
ZGUgPT0gJ2Rpc2FibGVkJykgT0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5TZWxlY3RpbmcgZnJvbSBhIGxpc3Qgb2Yg
dHJhY2tzPC90aXRsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWNvbnRyb2xzLmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi90cmFja21lbnUtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgdGltZXIgPSBudWxsOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkTGFuZ3VhZ2U7CisgICAgICAgICAgICB2YXIgdGVzdFN0YWdlID0gMDsKKyAg
ICAgICAgICAgIHZhciBjYXB0aW9uc0J1dHRvbkNvb3JkaW5hdGVzOworCisgICAgICAgICAgICBm
dW5jdGlvbiBzaG93Q2FwdGlvbk1lbnUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXMgPSBtZWRpYUNvbnRyb2xzQnV0dG9uQ29vcmRpbmF0
ZXModmlkZW8sICJ0b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiIpOworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiLSBzaG93IGNhcHRpb25zIG1lbnUuIik7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2FwdGlvbnNCdXR0b25Db29yZGluYXRlc1swXSwg
Y2FwdGlvbnNCdXR0b25Db29yZGluYXRlc1sxXSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChuZXh0U3RlcCwgMTAwKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tNZW51TGlzdCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEVsZW1lbnQgPSBnZXRUcmFja0xp
c3RFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKCF0cmFja0xpc3RFbGVtZW50KQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAvLyBUcmFjayBsaXN0
IHNob3VsZCBoYXZlIGEgPHVsPiB3aXRoIDxsaT4gY2hpbGRyZW4gKE9uZSBvZiB0aGVtIGlzICJP
ZmYiKS4KKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0ID0gdHJhY2tMaXN0RWxlbWVudC5x
dWVyeVNlbGVjdG9yKCJ1bCIpOworICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3VsZCBub3QgZmluZCBhIGNoaWxkIHVsIGVs
ZW1lbnQgaW4gdHJhY2sgbGlzdCBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEl0ZW1zID0g
dHJhY2tMaXN0LnF1ZXJ5U2VsZWN0b3JBbGwoImxpIik7CisgICAgICAgICAgICAgICAgaWYgKCF0
cmFja0xpc3RJdGVtcykgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiQ291bGQgbm90
IGZpbmQgY2hpbGQgbGkgZWxlbWVudHMgaW4gdHJhY2sgbGlzdCBtZW51Iik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJhY2tMaXN0SXRlbXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIHNlbGVjdENhcHRpb25NZW51SXRlbShpbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIi0gY2xpY2sgb24gbWVudSBpdGVtICIgKyBpbmRleCArICIu
Iik7CisgICAgICAgICAgICAgICAgdmFyIHRyYWNrTGlzdEl0ZW1zID0gdHJhY2tNZW51TGlzdCgp
OworICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyYWNrSXRlbSA9IHRyYWNrTGlzdEl0ZW1z
W2luZGV4XTsKKyAgICAgICAgICAgICAgICB2YXIgYm91bmRpbmdSZWN0ID0gc2VsZWN0ZWRUcmFj
a0l0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgdmFyIHggPSBi
b3VuZGluZ1JlY3QubGVmdCArIGJvdW5kaW5nUmVjdC53aWR0aCAvIDI7CisgICAgICAgICAgICAg
ICAgdmFyIHkgPSBib3VuZGluZ1JlY3QudG9wICsgYm91bmRpbmdSZWN0LmhlaWdodCAvIDI7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VVcCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0cmFj
a0xvYWRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJF
VkVOVChsb2FkKSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0
LnNyY2xhbmciLCBleHBlY3RlZExhbmd1YWdlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIiwgSFRNTFRyYWNrRWxlbWVudC5MT0FERUQpOwor
CisgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KG5leHRTdGVwLCAyMDApOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVUcmFja0VsZW1lbnQobGFu
Z3VhZ2UsIGlzRGVmYXVsdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJh
Y2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpOworICAgICAgICAgICAgICAgIHRy
YWNrLnNldEF0dHJpYnV0ZSgna2luZCcsICJjYXB0aW9ucyIpOworICAgICAgICAgICAgICAgIHRy
YWNrLnNyYyA9ICdkYXRhOnRleHQvdnR0LCcrZW5jb2RlVVJJQ29tcG9uZW50KCJXRUJWVFRcblxu
MDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMS4wMDBcbkNhcHRpb24gMVxuIik7CisgICAgICAgICAg
ICAgICAgdHJhY2suc2V0QXR0cmlidXRlKCdzcmNsYW5nJywgbGFuZ3VhZ2UpOworICAgICAgICAg
ICAgICAgIHRyYWNrLnNldEF0dHJpYnV0ZSgnb25sb2FkJywgJ3RyYWNrTG9hZGVkKCknKTsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICB0cmFjay5z
ZXRBdHRyaWJ1dGUoJ2RlZmF1bHQnLCAnZGVmYXVsdCcpOworICAgICAgICAgICAgICAgIHZpZGVv
LmFwcGVuZENoaWxkKHRyYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gY3JlYXRlVHJhY2tFbGVtZW50cyhsYW5ndWFnZXMsIGRlZmF1bHRJbmRleCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tzID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgndHJhY2snKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCB0
cmFja3MubGVuZ3RoOyArK25keCkKKyAgICAgICAgICAgICAgICAgICAgdmlkZW8ucmVtb3ZlQ2hp
bGQodHJhY2tzW25keF0pOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCItIGNyZWF0
aW5nIHRyYWNrcyBmb3I6IFsiICsgbGFuZ3VhZ2VzICsgIl0uIik7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgbmR4ID0gMDsgbmR4IDwgbGFuZ3VhZ2VzLmxlbmd0aDsgKytuZHgpCisgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZVRyYWNrRWxlbWVudChsYW5ndWFnZXNbbmR4XSwgbmR4ID09IGRl
ZmF1bHRJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5leHRT
dGVwKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICArK3Rlc3RTdGFnZTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHRlc3RTdGFnZSkgeworICAgICAgICAgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCAxOiB0cmFjayBzZWxl
Y3RlZCBiZWNhdXNlIG9mICdkZWZhdWx0JyBhdHRyaWJ1dGUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlVHJhY2tFbGVtZW50cyhbJ2VuJywgJ2ZyJywgJ25vJ10sIDEpOworICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZExhbmd1YWdlID0gJ2ZyJzsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiPGJyPlRlc3QgMjogdHJhY2sgc2VsZWN0ZWQgYmVjYXVzZSBvZiBvcmlnaW5h
bCB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZSIpOworICAgICAgICAgICAgICAgICAgICBjcmVhdGVU
cmFja0VsZW1lbnRzKFsnZnInLCAnZW4nLCAnbm8nXSk7CisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkTGFuZ3VhZ2UgPSAnbm8nOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8
YnI+VGVzdCAzOiBwcmVmZXJyZWQgbGFuZ3VhZ2UgY2hhbmdlZCBieSBzZWxlY3RpbmcgdHJhY2sg
ZnJvbSBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHNob3dDYXB0aW9uTWVudSgpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKDIpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSIsICJzaG93aW5nIik7
CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5s
YW5ndWFnZSIsICJmciIpOworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZExhbmd1YWdlID0g
J2ZyJzsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tFbGVtZW50cyhbICdubycsICdm
cicsICdlbicsXSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5UZXN0IDQ6
IHR1cm5pbmcgY2FwdGlvbnMgb2ZmIGZyb20gbWVudSBkaXNhYmxlcyBjYXB0aW9ucyIpOworICAg
ICAgICAgICAgICAgICAgICBzaG93Q2FwdGlvbk1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgIHNl
bGVjdENhcHRpb25NZW51SXRlbSgwKTsKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlVHJhY2tF
bGVtZW50cyhbICdydScsICdqcCcsICdlbicsXSk7CisgICAgICAgICAgICAgICAgICAgIHRpbWVy
ID0gc2V0VGltZW91dChuZXh0U3RlcCwgMjUwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IG5keCA9IDA7IG5keCA8IHZpZGVvLnRleHRUcmFja3MubGVuZ3RoOyArK25keCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1siICsgbmR4ICsg
Il0ubW9kZSIsICJkaXNhYmxlZCIpOworCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRN
ZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxl
KCd2aWRlbycsICcuLi9jb250ZW50L3Rlc3QnKTsKKyAgICAgICAgICAgICAgICB2aWRlby5hZGRF
dmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIG5leHRTdGVwKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj5TZXQgdXNlciBsYW5ndWFnZXMgdG86IFsnbm8nLCAnZXMtRVMn
LCAnZW4nLCAnZnInXS4iKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0VXNlclByZWZl
cnJlZExhbmd1YWdlcyhbJ25vJywgJ2VzLUVTJywgJ2VuJywgJ2ZyJ10pOworICAgICAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keSBvbmxvYWQ9InN0
YXJ0KCkiPgorICAgICAgICA8cD5UZXN0IHRyYWNrIHVzZXIgcHJlZmVyZW5jZXMuPC9wPgorICAg
ICAgICA8dmlkZW8gd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMDAiIGNvbnRyb2xzPgorICAgICAgICA8
L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNDExKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5
KQpAQCAtMzYwMCw2ICszNjAwLDcgQEAgd2Via2l0Lm9yZy9iLzEwODQyOSBzdmcvcmVwYWludC9z
dmdzdmdlbAogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRl
by1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxv
Y2FsaXplZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3RyYWNrL3Ry
YWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvOTI4MzUg
WyBBbmRyb2lkIE1hYyBXaW4gRGVidWcgXSBzdmcvYXMtYmFja2dyb3VuZC1pbWFnZS9zdmctYXMt
YmFja2dyb3VuZC01Lmh0bWwgWyBQYXNzIFNsb3cgXQogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTQyNDExKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE3MjYs
NiArMTcyNiw3IEBAIHdlYmtpdC5vcmcvYi8xMDI0OTMgZmFzdC9ldmVudHMvbW91c2UtY3UKIHdl
YmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTAx
NjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS90cmFjay90cmFjay11c2VyLXBy
ZWZlcmVuY2VzLmh0bWwgWyBTa2lwIF0KIAogIyBGYWlscyB1bnRpbCB3ZSBlbmFibGUgdGhlIFJl
c291cmNlIFRpbWluZyBBUEkuCiB3ZWJraXQub3JnL2IvNjExMzggaHR0cC90ZXN0cy93M2Mvd2Vi
cGVyZi9zdWJtaXNzaW9uL3Jlc291cmNlLXRpbWluZyBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE0MjQxMSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBA
IC03NzUsNiArNzc1LDcgQEAgQnVnKEdUSykgZmFzdC9tZWRpYS9wcmludC1yZXN0b3Jlcy1wcmV2
aQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFj
a21lbnUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250
cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXpl
ZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3RyYWNrL3RyYWNrLXVz
ZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvMTA3MTk0IHN0b3Jh
Z2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcv
Yi8xMDcxOTQgc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS13b3JrZXJzLmh0bWwg
WyBUaW1lb3V0IF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlv
bnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMTQyNDExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVj
dGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjUyOCw2ICsyNTI4LDcgQEAgd2Via2l0Lm9yZy9i
LzEwMDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZAogd2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92
aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVk
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MTAxNjcwIG1lZGlhL3RyYWNrL3RyYWNrLXVzZXItcHJlZmVyZW5jZXMuaHRtbCBbIFNraXAgXQog
CiAjIE5ldywgYnV0IGZhaWxpbmcgdGVzdAogd2Via2l0Lm9yZy9iLzEwMTAzNSBmYXN0L2ltYWdl
cy9leGlmLW9yaWVudGF0aW9uLWltYWdlLWRvY3VtZW50Lmh0bWwKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxNDI0MTEpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
MjUyNSw2ICsyNTI1LDcgQEAgbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1zbmFwLXRv
LQogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC5odG1sCiAKICMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQ3NworbWVkaWEvdHJhY2sv
dHJhY2stdXNlci1wcmVmZXJlbmNlcy5odG1sCiBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUtbG9jYWxpemVkLmh0bWwKIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25z
LXRyYWNrbWVudS1zb3J0ZWQuaHRtbAogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJh
Y2ttZW51Lmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>