<?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>144952</bug_id>
          
          <creation_ts>2015-05-13 09:29:44 -0700</creation_ts>
          <short_desc>Cached CSS image resources don&apos;t show up after reloading &lt;http://nightly.webkit.org/start/&gt;</short_desc>
          <delta_ts>2015-05-13 16:10:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonowells</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1094466</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-05-13 09:29:44 -0700</bug_when>
    <thetext>We don&apos;t revalidate resources on cached parsed stylesheets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094468</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-05-13 09:43:08 -0700</bug_when>
    <thetext>rdar://problem/13387307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094469</commentid>
    <comment_count>2</comment_count>
      <attachid>253034</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-05-13 09:46:24 -0700</bug_when>
    <thetext>Created attachment 253034
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094470</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-13 09:48:49 -0700</bug_when>
    <thetext>Attachment 253034 did not pass style-queue:


ERROR: Source/WebCore/css/CSSValueList.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/StyleSheetContents.h:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSCrossfadeValue.h:66:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSFilterImageValue.h:67:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSValue.h:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSValueList.cpp:154:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSValue.cpp:128:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSFontFaceSrcValue.cpp:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSCrossfadeValue.cpp:177:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSImageValue.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSFontFaceSrcValue.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSImageValue.cpp:102:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/StyleProperties.h:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/StyleProperties.cpp:1077:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSImageSetValue.cpp:187:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSFilterImageValue.cpp:152:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/CSSImageSetValue.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/StyleSheetContents.cpp:426:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/css/StyleSheetContents.cpp:466:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 19 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094609</commentid>
    <comment_count>4</comment_count>
      <attachid>253034</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-05-13 15:20:26 -0700</bug_when>
    <thetext>Comment on attachment 253034
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094631</commentid>
    <comment_count>5</comment_count>
      <attachid>253034</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-13 16:10:41 -0700</bug_when>
    <thetext>Comment on attachment 253034
patch

Clearing flags on attachment: 253034

Committed r184315: &lt;http://trac.webkit.org/changeset/184315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094632</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-13 16:10:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253034</attachid>
            <date>2015-05-13 09:46:24 -0700</date>
            <delta_ts>2015-05-13 16:10:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>stylesheet-subresource-revalidation-2.patch</filename>
            <type>text/plain</type>
            <size>40785</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMCBAQAorMjAxNS0wNS0xMyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVkIENTUyBpbWFnZSBy
ZXNvdXJjZXMgZG9uJ3Qgc2hvdyB1cCBhZnRlciByZWxvYWRpbmcgPGh0dHA6Ly9uaWdodGx5Lndl
YmtpdC5vcmcvc3RhcnQvPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ0OTUyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzEzMzg3MzA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHN5bXB0
b20gb2YgYSBnZW5lcmFsIHByb2JsZW0gdGhhdCB3ZSBkb24ndCByZXZhbGlkYXRlIHN1YnJlc291
cmNlcyBvZiBjYWNoZWQgcGFyc2VkIHN0eWxlc2hlZXRzLgorCisgICAgICAgIEZpeCBieSB0aWdo
dGVuaW5nIHRoZSBjaGVjayB3ZSBwZXJmb3JtIHdoZW4gY2hvb3NpbmcgdG8gdXNlZCB0aGUgY2Fj
aGVkIHNoZWV0LiBJZiB0aGVyZSBhcmUgZXhwaXJlZCBzdWJyZXNvdXJjZXMKKyAgICAgICAgd2Ug
cmVwYXJzZSB0aGUgc2hlZXQuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jYWNoZS9zdHls
ZXNoZWV0LXNoYXJpbmcuaHRtbAorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcyk6IERlbGV0ZWQuCisKKyAgICAgICAgICAgIFJlcGxhY2UgaGFz
RmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyB3aXRoIGdlbmVyYWwgcHVycG9zZSBzdWJyZXNv
dXJjZSB0cmF2ZXJzYWwgZnVuY3Rpb25zLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1
YnJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
aDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgor
ICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlU2V0VmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ltYWdlU2V0VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmg6CisgICAgICAgICogY3NzL0NT
U0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6dHJhdmVy
c2VTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6aGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0lt
YWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFsdWU6OnRyYXZlcnNlU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6dHJhdmVyc2VTdWJyZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3Vy
Y2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRp
ZXM6OnRyYXZlcnNlU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dGllczo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAg
ICogY3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXNJblJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpzdWJyZXNvdXJjZXNB
bGxvd1JldXNlKToKKworICAgICAgICAgICAgRGlzYWxsb3cgcmV1c2UgaWYgdGhlcmUgYXJlIGV4
cGlyZWQgc3VicmVzb3VyY2VzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVu
dHM6OmlzTG9hZGluZ1N1YnJlc291cmNlcyk6CisKKyAgICAgICAgICAgIFRlc3Rpbmcgc3VwcG9y
dC4KKworICAgICAgICAoV2ViQ29yZTo6Y2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50
czo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgICog
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENv
bnRlbnRzOjpsb2FkQ29tcGxldGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnJlc3RvcmVQYXJzZWRTdHlsZVNoZWV0
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6bWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjptdXN0UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKTogRGVsZXRlZC4KKwor
ICAgICAgICAgICAgTW92ZSB0aGUgbG9nZ2luZyBjb2RlIG91dCBmcm9tIHRoaXMgZnVuY3Rpb24g
KGl0IHJlcXVpcmVzIGZyYW1lIGFjY2VzcyB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3Qgb3RoZXJ3aXNl
IG5lZWQpCisgICAgICAgICAgICBhbmQgcmVmYWN0b3IgdG8gcmV0dXJuIGEgZGVjaXNpb24gZW51
bS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6bWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Omxv
Z1Jlc291cmNlUmV2YWxpZGF0aW9uUmVhc29uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjptdXN0UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjpsb2FkRmFpbGVkT3JDYW5jZWxlZCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmxvZ1JldmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpsb2dSZXNvdXJjZVJldmFsaWRh
dGlvbkRlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorCisgICAgICAgICAgICBNb3ZlIGxvZ2dpbmcg
aGVyZS4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aXNTaGFyaW5nU3R5bGVTaGVldENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aXNTdHlsZVNoZWV0TG9hZGluZ1N1YnJlc291cmNlcyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMTUtMDUtMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJlZHVjZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb3BpZXMgaW4gTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uLCBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCShyZXZpc2lvbiAxODQyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsMTEgKzE3NCwxMSBAQCB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpDcm9zc2ZhZGVTdWJp
bWFnCiAgICAgICAgIG1fb3duZXJWYWx1ZS0+Y3Jvc3NmYWRlQ2hhbmdlZCgqcmVjdCk7CiB9CiAK
LWJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMo
KSBjb25zdAorYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29u
c3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikg
Y29uc3QKIHsKLSAgICBpZiAobV9jYWNoZWRGcm9tSW1hZ2UgJiYgbV9jYWNoZWRGcm9tSW1hZ2Ut
PmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCisgICAgaWYgKG1fY2FjaGVkRnJvbUltYWdlICYmIGhh
bmRsZXIoKm1fY2FjaGVkRnJvbUltYWdlKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KG1fY2FjaGVkVG9JbWFnZSAmJiBtX2NhY2hlZFRvSW1hZ2UtPmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpCisgICAgaWYgKG1fY2FjaGVkVG9JbWFnZSAmJiBoYW5kbGVyKCptX2NhY2hlZFRvSW1hZ2Up
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQZXJjZW50YWdlKFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VWYWx1ZSkgeyBtX3BlcmNlbnRhZ2VWYWx1ZSA9
IHBlcmNlbnRhZ2VWYWx1ZTsgfQogCi0gICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKCkgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6
OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdDsK
IAogICAgIFBhc3NSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGJsZW5kKGNvbnN0IENTU0Nyb3Nz
ZmFkZVZhbHVlJiwgZG91YmxlKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTEg
KzE0OSwxMSBAQCB2b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OkZpbHRlclN1YmltYWdlCiAgICAg
ICAgIG1fb3duZXJWYWx1ZS0+ZmlsdGVySW1hZ2VDaGFuZ2VkKCpyZWN0KTsKIH0KIAotYm9vbCBD
U1NGaWx0ZXJJbWFnZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29u
c3QKK2Jvb2wgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29u
c3QKIHsKLSAgICBpZiAobV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5sb2FkRmFpbGVk
T3JDYW5jZWxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IGhhbmRsZXIoKm1fY2FjaGVkSW1hZ2UpOwogfQogCiBib29sIENTU0ZpbHRlckltYWdlVmFsdWU6
OmVxdWFscyhjb25zdCBDU1NGaWx0ZXJJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAkocmV2aXNpb24gMTg0Mjg2KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXImKTsKIAotICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJl
c291cmNlcygpIGNvbnN0OworICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qgc3Rk
OjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7
CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NGaWx0ZXJJbWFnZVZhbHVlJikgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAJKHJldmlz
aW9uIDE4NDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTEsMTEgKzkxLDExIEBAIHZvaWQgQ1NTRm9udEZhY2VTcmNW
YWx1ZTo6YWRkU3VicmVzb3VyY2UKICAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgc3R5
bGVTaGVldC0+Y29tcGxldGVVUkwobV9yZXNvdXJjZSkpOwogfQogCi1ib29sIENTU0ZvbnRGYWNl
U3JjVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAorYm9vbCBD
U1NGb250RmFjZVNyY1ZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25zdAogewogICAg
IGlmICghbV9jYWNoZWRGb250KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1f
Y2FjaGVkRm9udC0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKTsKKyAgICByZXR1cm4gaGFuZGxlcigq
bV9jYWNoZWRGb250KTsKIH0KIAogQ2FjaGVkRm9udCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2Fj
aGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNTVkcpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgJKHJldmlzaW9uIDE4NDI4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CiAKLSAg
ICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKKyAgICBib29s
IHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogCiAgICAgQ2FjaGVkRm9udCogY2FjaGVk
Rm9udChEb2N1bWVudCosIGJvb2wgaXNTVkcpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VTZXRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlU2V0VmFsdWUuY3BwCShyZXZpc2lvbiAxODQyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCwxNCArMTg0LDEz
IEBAIFN0cmluZyBDU1NJbWFnZVNldFZhbHVlOjpjdXN0b21DU1NUZXh0KCkKICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ1NTSW1hZ2VTZXRWYWx1ZTo6aGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Citib29sIENTU0ltYWdlU2V0VmFsdWU6OnRy
YXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVk
UmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxTdHlsZUNhY2hlZElt
YWdlU2V0PihtX2ltYWdlU2V0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRSZXNvdXJjZSA9IGRvd25jYXN0PFN0eWxlQ2FjaGVkSW1hZ2VTZXQ+
KCptX2ltYWdlU2V0KS5jYWNoZWRJbWFnZSgpOwotICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZS0+bG9hZEZhaWxl
ZE9yQ2FuY2VsZWQoKTsKKyAgICBBU1NFUlQoY2FjaGVkUmVzb3VyY2UpOworICAgIHJldHVybiBo
YW5kbGVyKCpjYWNoZWRSZXNvdXJjZSk7CiB9CiAKIENTU0ltYWdlU2V0VmFsdWU6OkNTU0ltYWdl
U2V0VmFsdWUoY29uc3QgQ1NTSW1hZ2VTZXRWYWx1ZSYgY2xvbmVGcm9tKQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCShyZXZpc2lvbiAxODQyODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3I7CiAgICAgfTsKIAotICAg
IGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OworICAgIGJvb2wg
dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNo
ZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENTU0ltYWdl
U2V0VmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxNCArOTksMTMgQEAgU3R5
bGVDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6Y2FjaGVkSQogICAgIHJldHVybiBjYWNoZWRJ
bWFnZShsb2FkZXIsIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCkpOwogfQogCi1ib29sIENTU0ltYWdlVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRT
dWJyZXNvdXJjZXMoKSBjb25zdAorYm9vbCBDU1NJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291
cmNlcyhjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBo
YW5kbGVyKSBjb25zdAogewogICAgIGlmICghaXM8U3R5bGVDYWNoZWRJbWFnZT4obV9pbWFnZS5n
ZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UgPSBkb3duY2FzdDxTdHlsZUNhY2hlZEltYWdlPigqbV9pbWFnZSkuY2FjaGVkSW1h
Z2UoKTsKLSAgICBpZiAoIWNhY2hlZFJlc291cmNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7CisgICAgQVNT
RVJUKGNhY2hlZFJlc291cmNlKTsKKyAgICByZXR1cm4gaGFuZGxlcigqY2FjaGVkUmVzb3VyY2Up
OwogfQogCiBib29sIENTU0ltYWdlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NJbWFnZVZhbHVlJiBv
dGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkocmV2aXNpb24g
MTg0Mjg2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKLSAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRT
dWJyZXNvdXJjZXMoKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0
IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNv
bnN0OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYpIGNvbnN0OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHJldmlzaW9uIDE4NDI4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwyNCArMTI1LDI0
IEBAIHZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKEwKICAgICAgICAgZG93
bmNhc3Q8Q1NTUmVmbGVjdFZhbHVlPigqdGhpcykuYWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJs
cywgc3R5bGVTaGVldCk7CiB9CiAKLWJvb2wgQ1NTVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRT
dWJyZXNvdXJjZXMoKSBjb25zdAorYm9vbCBDU1NWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMo
Y29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxl
cikgY29uc3QKIHsKICAgICAvLyBUaGlzIHNob3VsZCBnZXQgY2FsbGVkIGZvciBpbnRlcm5hbCBp
bnN0YW5jZXMgb25seS4KICAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkpOwogCiAgICAgaWYgKGlz
PENTU1ZhbHVlTGlzdD4oKnRoaXMpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0PigqdGhpcykuaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpOworICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdGhpcykudHJhdmVyc2VTdWJyZXNvdXJjZXMo
aGFuZGxlcik7CiAgICAgaWYgKGlzPENTU0ZvbnRGYWNlU3JjVmFsdWU+KCp0aGlzKSkKLSAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWU+KCp0aGlzKS5oYXNGYWlsZWRP
ckNhbmNlbGVkU3VicmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NGb250
RmFjZVNyY1ZhbHVlPigqdGhpcykudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcik7CiAgICAg
aWYgKGlzPENTU0ltYWdlVmFsdWU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PENT
U0ltYWdlVmFsdWU+KCp0aGlzKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCk7Cisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPigqdGhpcykudHJhdmVyc2VTdWJy
ZXNvdXJjZXMoaGFuZGxlcik7CiAgICAgaWYgKGlzPENTU0Nyb3NzZmFkZVZhbHVlPigqdGhpcykp
Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDcm9zc2ZhZGVWYWx1ZT4oKnRoaXMpLmhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENT
U0Nyb3NzZmFkZVZhbHVlPigqdGhpcykudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcik7CiAg
ICAgaWYgKGlzPENTU0ZpbHRlckltYWdlVmFsdWU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIGRv
d25jYXN0PENTU0ZpbHRlckltYWdlVmFsdWU+KCp0aGlzKS5oYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NGaWx0ZXJJbWFnZVZhbHVl
PigqdGhpcykudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcik7CiAjaWYgRU5BQkxFKENTU19J
TUFHRV9TRVQpCiAgICAgaWYgKGlzPENTU0ltYWdlU2V0VmFsdWU+KCp0aGlzKSkKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KCp0aGlzKS5oYXNGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NJbWFnZVNldFZh
bHVlPigqdGhpcykudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcik7CiAjZW5kaWYKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMTg0Mjg2
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKICAgICAKIC8vIEZJWE1FOiBUaGUgY3VycmVu
dCBDU1NWYWx1ZSBhbmQgc3ViY2xhc3NlcyBzaG91bGQgYmUgdHVybmVkIGludG8gaW50ZXJuYWwg
dHlwZXMgKFN0eWxlVmFsdWUpLgpAQCAtMTIyLDcgKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxl
U2hlZXRDb250ZW50cyopIGNvbnN0OwogCi0gICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3Q7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25zdCBz
dGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBjb25z
dDsKIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCShyZXZpc2lvbiAxODQyODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEwICsx
NTEsMTAgQEAgdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJlc291cmNlU3R5bGVVUgogICAgICAg
ICBtX3ZhbHVlc1tpXS5nZXQoKS5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNo
ZWV0KTsKIH0KIAotYm9vbCBDU1NWYWx1ZUxpc3Q6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNv
dXJjZXMoKSBjb25zdAorYm9vbCBDU1NWYWx1ZUxpc3Q6OnRyYXZlcnNlU3VicmVzb3VyY2VzKGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIp
IGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGlmIChtX3ZhbHVlc1tpXS5nZXQoKS5oYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkpCisgICAgICAgIGlmIChtX3ZhbHVlc1tpXS5nZXQoKS50cmF2ZXJzZVN1
YnJlc291cmNlcyhoYW5kbGVyKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCShyZXZpc2lv
biAxODQyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikg
Y29uc3Q7CiAKLSAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25z
dDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9v
bCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogICAgIAogICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAxODQyODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA3NCwxMSArMTA3NCwxMSBAQCB2b2lkIFN0eWxlUHJvcGVydGllczo6YWRkU3VicmVzb3VyY2VT
dHlsCiAgICAgICAgIHByb3BlcnR5QXQoaSkudmFsdWUoKS0+YWRkU3VicmVzb3VyY2VTdHlsZVVS
THModXJscywgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCi1ib29sIFN0eWxlUHJvcGVydGllczo6
aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Citib29sIFN0eWxlUHJvcGVy
dGllczo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25z
dCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKIHsKICAgICB1bnNpZ25lZCBzaXpl
ID0gcHJvcGVydHlDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKLSAgICAgICAgaWYgKHByb3BlcnR5QXQoaSkudmFsdWUoKS0+aGFzRmFpbGVkT3JDYW5j
ZWxlZFN1YnJlc291cmNlcygpKQorICAgICAgICBpZiAocHJvcGVydHlBdChpKS52YWx1ZSgpLT50
cmF2ZXJzZVN1YnJlc291cmNlcyhoYW5kbGVyKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5oCShyZXZpc2lvbiAxODQyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKK2NsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVVJMOwogY2xhc3MgTXV0
YWJsZVN0eWxlUHJvcGVydGllczsKQEAgLTEwNyw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc011dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzTXV0YWJsZTsgfQogICAgIGJvb2wgaGFz
Q1NTT01XcmFwcGVyKCkgY29uc3Q7CiAKLSAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJy
ZXNvdXJjZXMoKSBjb25zdDsKKyAgICBib29sIHRyYXZlcnNlU3VicmVzb3VyY2VzKGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKT4mIGhhbmRsZXIpIGNvbnN0
OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGF2ZXJhZ2VTaXplSW5CeXRlcygpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAkocmV2aXNpb24gMTg0Mjg2
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyMywyNCArNDIzLDI0IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjphZGRT
dWJyZXNvdXJjZVMKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGNoaWxkUnVsZXNIYXZlRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMpCitzdGF0aWMgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlc0luUnVsZXMoY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25zdCBzdGQ6OmZ1bmN0aW9u
PGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKQogewogICAgIGZvciAoYXV0
byYgcnVsZSA6IHJ1bGVzKSB7CiAgICAgICAgIHN3aXRjaCAocnVsZS0+dHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6U3R5bGU6Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8
U3R5bGVSdWxlPigqcnVsZSkucHJvcGVydGllcygpLmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNv
dXJjZXMoKSkKKyAgICAgICAgICAgIGlmIChkb3duY2FzdDxTdHlsZVJ1bGU+KCpydWxlKS5wcm9w
ZXJ0aWVzKCkudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcikpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHlsZVJ1bGVC
YXNlOjpGb250RmFjZToKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxTdHlsZVJ1bGVGb250RmFj
ZT4oKnJ1bGUpLnByb3BlcnRpZXMoKS5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkp
CisgICAgICAgICAgICBpZiAoZG93bmNhc3Q8U3R5bGVSdWxlRm9udEZhY2U+KCpydWxlKS5wcm9w
ZXJ0aWVzKCkudHJhdmVyc2VTdWJyZXNvdXJjZXMoaGFuZGxlcikpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHlsZVJ1bGVC
YXNlOjpNZWRpYToKLSAgICAgICAgICAgIGlmIChjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2Vs
ZWRTdWJyZXNvdXJjZXMoZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCpydWxlKS5jaGlsZFJ1bGVz
KCkpKQorICAgICAgICAgICAgaWYgKHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcyhkb3duY2Fz
dDxTdHlsZVJ1bGVNZWRpYT4oKnJ1bGUpLmNoaWxkUnVsZXMoKSwgaGFuZGxlcikpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
dHlsZVJ1bGVCYXNlOjpSZWdpb246Ci0gICAgICAgICAgICBpZiAoY2hpbGRSdWxlc0hhdmVGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnJ1bGUp
LmNoaWxkUnVsZXMoKSkpCisgICAgICAgICAgICBpZiAodHJhdmVyc2VTdWJyZXNvdXJjZXNJblJ1
bGVzKGRvd25jYXN0PFN0eWxlUnVsZVJlZ2lvbj4oKnJ1bGUpLmNoaWxkUnVsZXMoKSwgaGFuZGxl
cikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpJbXBvcnQ6CkBAIC00NjMsMTAgKzQ2MywzNSBAQCBz
dGF0aWMgYm9vbCBjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFN0eWxlU2hlZXRDb250ZW50czo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJl
c291cmNlcygpIGNvbnN0Citib29sIFN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNv
dXJjZXMoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYg
aGFuZGxlcikgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7Ci0gICAgcmV0dXJu
IGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhtX2NoaWxkUnVsZXMp
OworICAgIGZvciAoYXV0byYgaW1wb3J0UnVsZSA6IG1faW1wb3J0UnVsZXMpIHsKKyAgICAgICAg
aWYgKCFpbXBvcnRSdWxlLT5zdHlsZVNoZWV0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcyhpbXBvcnRSdWxlLT5zdHlsZVNo
ZWV0KCktPm1fY2hpbGRSdWxlcywgaGFuZGxlcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHRyYXZlcnNlU3VicmVzb3VyY2VzSW5SdWxlcyhtX2NoaWxkUnVs
ZXMsIGhhbmRsZXIpOworfQorCitib29sIFN0eWxlU2hlZXRDb250ZW50czo6c3VicmVzb3VyY2Vz
QWxsb3dSZXVzZShDYWNoZVBvbGljeSBjYWNoZVBvbGljeSkgY29uc3QKK3sKKyAgICBib29sIGhh
c0ZhaWxlZE9yRXhwaXJlZFJlc291cmNlcyA9IHRyYXZlcnNlU3VicmVzb3VyY2VzKFtjYWNoZVBv
bGljeV0oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSB7CisgICAgICAgIGlmIChyZXNv
dXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIC8vIFdlIGNhbid0IHJldmFsaWRhdGUgc3VicmVzb3VyY2VzIGluZGl2aWR1YWxseSBz
byBkb24ndCB1c2UgcmV1c2UgdGhlIHBhcnNlZCBzaGVldCBpZiB0aGV5IG5lZWQgcmV2YWxpZGF0
aW9uLgorICAgICAgICBpZiAocmVzb3VyY2UubWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKGNhY2hl
UG9saWN5KSAhPSBDYWNoZWRSZXNvdXJjZTo6UmV2YWxpZGF0aW9uRGVjaXNpb246Ok5vKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gIWhhc0ZhaWxlZE9yRXhwaXJlZFJlc291cmNlczsKK30KKworYm9vbCBTdHlsZVNo
ZWV0Q29udGVudHM6OmlzTG9hZGluZ1N1YnJlc291cmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRyYXZlcnNlU3VicmVzb3VyY2VzKFtdKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkg
eworICAgICAgICByZXR1cm4gcmVzb3VyY2UuaXNMb2FkaW5nKCk7CisgICAgfSk7CiB9CiAKIFN0
eWxlU2hlZXRDb250ZW50cyogU3R5bGVTaGVldENvbnRlbnRzOjpwYXJlbnRTdHlsZVNoZWV0KCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHJldmlz
aW9uIDE4NDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBTdHlsZVNoZWV0Q29udGVu
dHNfaAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNhY2hlUG9saWN5
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTM0LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2Ns
YXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3Mg
U3R5bGVSdWxlQmFzZTsKQEAgLTY3LDYgKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNDYWNo
ZWFibGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CisgICAgYm9vbCBz
dWJyZXNvdXJjZXNBbGxvd1JldXNlKENhY2hlUG9saWN5KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGlzTG9hZGluZ1N1YnJlc291cmNlcygpIGNvbnN0OwogCiAgICAgdm9pZCBjaGVj
a0xvYWRlZCgpOwogICAgIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCk7CkBAIC03OCwx
MCArODIsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgY2hhcnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyc2VyQ29udGV4dC5jaGFyc2V0OyB9CiAKICAgICBib29sIGxvYWRDb21wbGV0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRDb21wbGV0ZWQ7IH0KLSAgICBib29sIGhhc0ZhaWxl
ZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIAogICAgIFVSTCBjb21wbGV0ZVVSTChj
b25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxVUkw+Jik7CisgICAgYm9vbCB0cmF2ZXJzZVN1YnJlc291cmNlcyhjb25z
dCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IENhY2hlZFJlc291cmNlJik+JiBoYW5kbGVyKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0SXNVc2VyU3R5bGVTaGVldChib29sIGIpIHsgbV9pc1VzZXJT
dHlsZVNoZWV0ID0gYjsgfQogICAgIGJvb2wgaXNVc2VyU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNVc2VyU3R5bGVTaGVldDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsOCArMzIxLDkgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoYwogICAgIFJlZjxIVE1MTGlua0Vs
ZW1lbnQ+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250
ZXh0KGRvY3VtZW50KCksIGJhc2VVUkwsIGNoYXJzZXQpOworICAgIGF1dG8gY2FjaGVQb2xpY3kg
PSBkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKTsK
IAotICAgIGlmIChSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiByZXN0b3JlZFNoZWV0ID0gY29u
c3RfY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0Kj4oY2FjaGVkU3R5bGVTaGVldCktPnJlc3RvcmVQ
YXJzZWRTdHlsZVNoZWV0KHBhcnNlckNvbnRleHQpKSB7CisgICAgaWYgKFJlZlB0cjxTdHlsZVNo
ZWV0Q29udGVudHM+IHJlc3RvcmVkU2hlZXQgPSBjb25zdF9jYXN0PENhY2hlZENTU1N0eWxlU2hl
ZXQqPihjYWNoZWRTdHlsZVNoZWV0KS0+cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQocGFyc2VyQ29u
dGV4dCwgY2FjaGVQb2xpY3kpKSB7CiAgICAgICAgIEFTU0VSVChyZXN0b3JlZFNoZWV0LT5pc0Nh
Y2hlYWJsZSgpKTsKICAgICAgICAgQVNTRVJUKCFyZXN0b3JlZFNoZWV0LT5pc0xvYWRpbmcoKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDE4NDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDEx
ICsxNDMsMTEgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkZXN0cm95RGVjb2RlZAogICAg
IHNldERlY29kZWRTaXplKDApOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4g
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6cmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK1Bhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpyZXN0b3JlUGFyc2VkU3R5bGVTaGVldChjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0LCBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSkKIHsKICAgICBpZiAoIW1f
cGFyc2VkU3R5bGVTaGVldENhY2hlKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobV9wYXJz
ZWRTdHlsZVNoZWV0Q2FjaGUtPmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkgewor
ICAgIGlmICghbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPnN1YnJlc291cmNlc0FsbG93UmV1c2Uo
Y2FjaGVQb2xpY3kpKSB7CiAgICAgICAgIG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5yZW1vdmVk
RnJvbU1lbW9yeUNhY2hlKCk7CiAgICAgICAgIG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLmNsZWFy
KCk7CiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCShyZXZpc2lvbiAxODQyODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBjb25z
dCBTdHJpbmcgc2hlZXRUZXh0KGJvb2wqIGhhc1ZhbGlkTUlNRVR5cGUgPSBudWxscHRyKSBjb25z
dDsKIAotICAgICAgICBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gcmVzdG9yZVBhcnNl
ZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOworICAgICAgICBQYXNzUmVmUHRy
PFN0eWxlU2hlZXRDb250ZW50cz4gcmVzdG9yZVBhcnNlZFN0eWxlU2hlZXQoY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYsIENhY2hlUG9saWN5KTsKICAgICAgICAgdm9pZCBzYXZlUGFyc2VkU3R5bGVT
aGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDE4
NDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxNSw3ICs1MTUsNyBAQCBib29sIENhY2hlZEltYWdlOjppc09yaWdp
bkNsZWFuKFNlY3VyaXR5CiAgICAgcmV0dXJuICFzZWN1cml0eU9yaWdpbi0+dGFpbnRzQ2FudmFz
KHJlc3BvbnNlKCkudXJsKCkpOwogfQogCi1ib29sIENhY2hlZEltYWdlOjptdXN0UmV2YWxpZGF0
ZUR1ZVRvQ2FjaGVIZWFkZXJzKGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyJiBjYWNoZWRSZXNv
dXJjZUxvYWRlciwgQ2FjaGVQb2xpY3kgcG9saWN5KSBjb25zdAorQ2FjaGVkUmVzb3VyY2U6OlJl
dmFsaWRhdGlvbkRlY2lzaW9uIENhY2hlZEltYWdlOjptYWtlUmV2YWxpZGF0aW9uRGVjaXNpb24o
Q2FjaGVQb2xpY3kgY2FjaGVQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKGlzTWFu
dWFsbHlDYWNoZWQoKSkpIHsKICAgICAgICAgLy8gRG8gbm90IHJldmFsaWRhdGUgbWFudWFsbHkg
Y2FjaGVkIGltYWdlcy4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBhcyBhCkBAIC01MjMsOSArNTIz
LDkgQEAgYm9vbCBDYWNoZWRJbWFnZTo6bXVzdFJldmFsaWRhdGVEdWVUb0NhYwogICAgICAgICAv
LyB0aGUgVVJMIGZvciB0aGF0IGltYWdlIG1heSBub3QgcmVwcmVzZW50IGEgcmVzb3VyY2UgdGhh
dCBjYW4gYmUKICAgICAgICAgLy8gcmV0cmlldmVkIGJ5IHN0YW5kYXJkIG1lYW5zLiBJZiB0aGUg
bWFudWFsIGNhY2hpbmcgU1BJIGlzIHVzZWQsIGl0IGlzCiAgICAgICAgIC8vIGluY3VtYmVudCBv
biB0aGUgY2xpZW50IHRvIG9ubHkgdXNlIHZhbGlkIHJlc291cmNlcy4KLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gUmV2YWxpZGF0aW9uRGVjaXNpb246Ok5vOwogICAgIH0K
LSAgICByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6Om11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhlYWRl
cnMoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIHBvbGljeSk7CisgICAgcmV0dXJuIENhY2hlZFJlc291
cmNlOjptYWtlUmV2YWxpZGF0aW9uRGVjaXNpb24oY2FjaGVQb2xpY3kpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pOwog
CiAgICAgYm9vbCBpc01hbnVhbGx5Q2FjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01hbnVhbGx5
Q2FjaGVkOyB9Ci0gICAgdmlydHVhbCBib29sIG11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhlYWRl
cnMoY29uc3QgQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBDYWNoZVBvbGljeSkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmV2YWxpZGF0aW9uRGVjaXNpb24gbWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKENh
Y2hlUG9saWN5KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc09yaWdpbkNsZWFuKFNlY3VyaXR5T3JpZ2luKik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE4
NDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4MCwzOSArNjgwLDMwIEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6
OmNhblVzZUNhY2hlVmFsaWRhdG8KICAgICByZXR1cm4gbV9yZXNwb25zZS5oYXNDYWNoZVZhbGlk
YXRvckZpZWxkcygpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgbG9nUmVzb3VyY2VSZXZhbGlk
YXRpb25SZWFzb24oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBp
ZiAoZnJhbWUpCi0gICAgICAgIGZyYW1lLT5tYWluRnJhbWUoKS5kaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5
czo6Y2FjaGVkUmVzb3VyY2VSZXZhbGlkYXRpb25LZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjpyZWFzb25LZXkoKSwgcmVhc29uLCBTaG91bGRTYW1wbGU6Olllcyk7Ci19Ci0KLWJvb2wgQ2Fj
aGVkUmVzb3VyY2U6Om11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhlYWRlcnMoY29uc3QgQ2FjaGVk
UmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZVBvbGljeSBjYWNoZVBv
bGljeSkgY29uc3QKK0NhY2hlZFJlc291cmNlOjpSZXZhbGlkYXRpb25EZWNpc2lvbiBDYWNoZWRS
ZXNvdXJjZTo6bWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKENhY2hlUG9saWN5IGNhY2hlUG9saWN5
KSBjb25zdAogeyAgICAKLSAgICBBU1NFUlQoY2FjaGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lSZXZh
bGlkYXRlIHx8IGNhY2hlUG9saWN5ID09IENhY2hlUG9saWN5VmVyaWZ5KTsKLQotICAgIGlmIChj
YWNoZVBvbGljeSA9PSBDYWNoZVBvbGljeVJldmFsaWRhdGUpIHsKLSAgICAgICAgbG9nUmVzb3Vy
Y2VSZXZhbGlkYXRpb25SZWFzb24oY2FjaGVkUmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpyZWxvYWRLZXkoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIGlmIChtX3Jlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpIHx8
IG1fcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpIHsKLSAgICAgICAgTE9H
KFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlICVwIG11c3RSZXZhbGlkYXRlIGJlY2F1
c2Ugb2YgbV9yZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSB8fCBtX3Jlc3Bv
bnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpXG4iLCB0aGlzKTsKKyAgICBzd2l0Y2gg
KGNhY2hlUG9saWN5KSB7CisgICAgY2FzZSBDYWNoZVBvbGljeUhpc3RvcnlCdWZmZXI6CisgICAg
ICAgIHJldHVybiBSZXZhbGlkYXRpb25EZWNpc2lvbjo6Tm87CisKKyAgICBjYXNlIENhY2hlUG9s
aWN5UmVsb2FkOgorICAgIGNhc2UgQ2FjaGVQb2xpY3lSZXZhbGlkYXRlOgorICAgICAgICByZXR1
cm4gUmV2YWxpZGF0aW9uRGVjaXNpb246Olllc0R1ZVRvQ2FjaGVQb2xpY3k7CisKKyAgICBjYXNl
IENhY2hlUG9saWN5VmVyaWZ5OgorICAgICAgICBpZiAobV9yZXNwb25zZS5jYWNoZUNvbnRyb2xD
b250YWluc05vQ2FjaGUoKSkKKyAgICAgICAgICAgIHJldHVybiBSZXZhbGlkYXRpb25EZWNpc2lv
bjo6WWVzRHVlVG9Ob0NhY2hlOworICAgICAgICAvLyBGSVhNRTogQ2FjaGUtQ29udHJvbDpuby1z
dG9yZSBzaG91bGQgcHJldmVudCBzdG9yaW5nLCBub3QgcmV1c2UuCiAgICAgICAgIGlmIChtX3Jl
c3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKQotICAgICAgICAgICAgbG9nUmVz
b3VyY2VSZXZhbGlkYXRpb25SZWFzb24oY2FjaGVkUmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpub1N0b3JlS2V5KCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBsb2dSZXNvdXJjZVJldmFsaWRhdGlvblJlYXNvbihjYWNoZWRSZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vQ2FjaGVLZXkoKSk7Ci0KLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQorICAgICAgICAgICAgcmV0dXJuIFJldmFsaWRhdGlvbkRlY2lz
aW9uOjpZZXNEdWVUb05vU3RvcmU7CiAKLSAgICAvLyBDYWNoZVBvbGljeVZlcmlmeQotICAgIGlm
IChpc0V4cGlyZWQoKSkgewotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVz
b3VyY2UgJXAgbXVzdFJldmFsaWRhdGUgYmVjYXVzZSBvZiBpc0V4cGlyZWQoKVxuIiwgdGhpcyk7
Ci0gICAgICAgIGxvZ1Jlc291cmNlUmV2YWxpZGF0aW9uUmVhc29uKGNhY2hlZFJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6aXNFeHBpcmVkS2V5KCkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgICAgIGlmIChpc0V4cGlyZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBSZXZhbGlkYXRpb25EZWNpc2lvbjo6WWVzRHVlVG9FeHBpcmVkOwogCi0g
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gUmV2YWxpZGF0aW9uRGVjaXNpb246Ok5v
OworICAgIH07CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFJldmFsaWRh
dGlvbkRlY2lzaW9uOjpObzsKIH0KIAogYm9vbCBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RDaGFp
bkFsbG93c1JldXNlKFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uT3JOb3QgcmV1c2VFeHBpcmVkUmVk
aXJlY3Rpb24pIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgYm9vbCB3YXNDYW5jZWxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZXJyb3IuaXNDYW5jZWxsYXRpb24oKTsgfQogICAgIGJvb2wgZXJy
b3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IExvYWRFcnJvciB8fCBtX3N0
YXR1cyA9PSBEZWNvZGVFcnJvcjsgfQotICAgIGJvb2wgbG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSB7
IHJldHVybiAhbV9lcnJvci5pc051bGwoKTsgfQorICAgIGJvb2wgbG9hZEZhaWxlZE9yQ2FuY2Vs
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9lcnJvci5pc051bGwoKTsgfQogCiAgICAgYm9vbCBzaG91
bGRTZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnNl
bmRMb2FkQ2FsbGJhY2tzKCkgPT0gU2VuZENhbGxiYWNrczsgfQogICAgIERhdGFCdWZmZXJpbmdQ
b2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5kYXRh
QnVmZmVyaW5nUG9saWN5KCk7IH0KQEAgLTIyOSw3ICsyMjksOCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBjYW5Vc2VDYWNoZVZhbGlkYXRvcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29s
IG11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhlYWRlcnMoY29uc3QgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImLCBDYWNoZVBvbGljeSkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBSZXZhbGlkYXRpb25EZWNp
c2lvbiB7IE5vLCBZZXNEdWVUb0NhY2hlUG9saWN5LCBZZXNEdWVUb05vU3RvcmUsIFllc0R1ZVRv
Tm9DYWNoZSwgWWVzRHVlVG9FeHBpcmVkIH07CisgICAgdmlydHVhbCBSZXZhbGlkYXRpb25EZWNp
c2lvbiBtYWtlUmV2YWxpZGF0aW9uRGVjaXNpb24oQ2FjaGVQb2xpY3kpIGNvbnN0OwogICAgIGJv
b2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uT3JOb3Qp
IGNvbnN0OwogCiAgICAgYm9vbCBpc0NhY2hlVmFsaWRhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVRvUmV2YWxpZGF0ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxODQyODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NDYsNiArNjQ2LDM0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnN0b3JlUmVzb3VyY2UKIH0KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQog
CitzdGF0aWMgdm9pZCBsb2dSZXZhbGlkYXRpb24oY29uc3QgU3RyaW5nJiByZWFzb24sIERpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50JiBsb2dDbGllbnQpCit7CisgICAgbG9nQ2xpZW50LmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVzb3Vy
Y2VSZXZhbGlkYXRpb25LZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZWFzb25LZXkoKSwg
cmVhc29uLCBTaG91bGRTYW1wbGU6Olllcyk7Cit9CisKK3N0YXRpYyB2b2lkIGxvZ1Jlc291cmNl
UmV2YWxpZGF0aW9uRGVjaXNpb24oQ2FjaGVkUmVzb3VyY2U6OlJldmFsaWRhdGlvbkRlY2lzaW9u
IHJlYXNvbiwgY29uc3QgRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvJiBsb2dDbGllbnQgPSBmcmFtZS0+bWFpbkZyYW1lKCkuZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKTsKKyAgICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlJldmFsaWRhdGlvbkRlY2lzaW9uOjpObzoKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmV2YWxpZGF0aW9uRGVjaXNpb246Olllc0R1ZVRvRXhw
aXJlZDoKKyAgICAgICAgbG9nUmV2YWxpZGF0aW9uKERpYWdub3N0aWNMb2dnaW5nS2V5czo6aXNF
eHBpcmVkS2V5KCksIGxvZ0NsaWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlJldmFsaWRhdGlvbkRlY2lzaW9uOjpZZXNEdWVUb05vU3RvcmU6CisgICAgICAg
IGxvZ1JldmFsaWRhdGlvbihEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vU3RvcmVLZXkoKSwgbG9n
Q2xpZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmV2YWxp
ZGF0aW9uRGVjaXNpb246Olllc0R1ZVRvTm9DYWNoZToKKyAgICAgICAgbG9nUmV2YWxpZGF0aW9u
KERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm9DYWNoZUtleSgpLCBsb2dDbGllbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSZXZhbGlkYXRpb25EZWNpc2lvbjo6
WWVzRHVlVG9DYWNoZVBvbGljeToKKyAgICAgICAgbG9nUmV2YWxpZGF0aW9uKERpYWdub3N0aWNM
b2dnaW5nS2V5czo6cmVsb2FkS2V5KCksIGxvZ0NsaWVudCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBmb3JQcmVsb2FkLCBD
YWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpE
ZWZlck9wdGlvbiBkZWZlcikgY29uc3QKIHsKICAgICBpZiAoIWV4aXN0aW5nUmVzb3VyY2UpCkBA
IC03MzgsOCArNzY2LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xp
Y3kKICAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+aXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVy
biBVc2U7CiAKKyAgICBhdXRvIHJldmFsaWRhdGlvbkRlY2lzaW9uID0gZXhpc3RpbmdSZXNvdXJj
ZS0+bWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKGNhY2hlUG9saWN5KHR5cGUpKTsKKyAgICBsb2dS
ZXNvdXJjZVJldmFsaWRhdGlvbkRlY2lzaW9uKHJldmFsaWRhdGlvbkRlY2lzaW9uLCBmcmFtZSgp
KTsKKwogICAgIC8vIENoZWNrIGlmIHRoZSBjYWNoZSBoZWFkZXJzIHJlcXVpcmVzIHVzIHRvIHJl
dmFsaWRhdGUgKGNhY2hlIGV4cGlyYXRpb24gZm9yIGV4YW1wbGUpLgotICAgIGlmIChleGlzdGlu
Z1Jlc291cmNlLT5tdXN0UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKCp0aGlzLCBjYWNoZVBv
bGljeSh0eXBlKSkpIHsKKyAgICBpZiAocmV2YWxpZGF0aW9uRGVjaXNpb24gIT0gQ2FjaGVkUmVz
b3VyY2U6OlJldmFsaWRhdGlvbkRlY2lzaW9uOjpObykgewogICAgICAgICAvLyBTZWUgaWYgdGhl
IHJlc291cmNlIGhhcyB1c2FibGUgRVRhZyBvciBMYXN0LW1vZGlmaWVkIGhlYWRlcnMuCiAgICAg
ICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT5jYW5Vc2VDYWNoZVZhbGlkYXRvcigpKQogICAgICAg
ICAgICAgcmV0dXJuIFJldmFsaWRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCShyZXZpc2lvbiAxODQyODYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJIVE1M
SUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MUHJlbG9hZFNjYW5uZXIuaCIKQEAgLTQ0MSw2ICs0NDIsMjUgQEAgU3RyaW5nIElu
dGVybmFsczo6eGhyUmVzcG9uc2VTb3VyY2UoWE1MSAogICAgIHJldHVybiAiRXJyb3IiOwogfQog
Citib29sIEludGVybmFsczo6aXNTaGFyaW5nU3R5bGVTaGVldENvbnRlbnRzKEVsZW1lbnQqIGEs
IEVsZW1lbnQqIGIpCit7CisgICAgaWYgKCFpczxIVE1MTGlua0VsZW1lbnQ+KGEpIHx8ICFpczxI
VE1MTGlua0VsZW1lbnQ+KGIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byYgYUxp
bmsgPSBkb3duY2FzdDxIVE1MTGlua0VsZW1lbnQ+KCphKTsKKyAgICBhdXRvJiBiTGluayA9IGRv
d25jYXN0PEhUTUxMaW5rRWxlbWVudD4oKmIpOworICAgIGlmICghYUxpbmsuc2hlZXQoKSB8fCAh
Ykxpbmsuc2hlZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAmYUxpbmsu
c2hlZXQoKS0+Y29udGVudHMoKSA9PSAmYkxpbmsuc2hlZXQoKS0+Y29udGVudHMoKTsKK30KKwor
Ym9vbCBJbnRlcm5hbHM6OmlzU3R5bGVTaGVldExvYWRpbmdTdWJyZXNvdXJjZXMoRWxlbWVudCog
bGluaykKK3sKKyAgICBpZiAoIWlzPEhUTUxMaW5rRWxlbWVudD4obGluaykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvJiBsaW5rRWxlbWVudCA9IGRvd25jYXN0PEhUTUxMaW5rRWxl
bWVudD4oKmxpbmspOworICAgIHJldHVybiBsaW5rRWxlbWVudC5zaGVldCgpICYmIGxpbmtFbGVt
ZW50LnNoZWV0KCktPmNvbnRlbnRzKCkuaXNMb2FkaW5nU3VicmVzb3VyY2VzKCk7Cit9CisKIHN0
YXRpYyBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBzdHJpbmdUb1Jlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5KQogewogICAgIGlmIChwb2xpY3kgPT0gIlVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kiKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CShyZXZpc2lvbiAxODQyODYpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJl
bG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBib29sIGlzTG9hZGluZ0Zyb21NZW1vcnlD
YWNoZShjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgU3RyaW5nIHhoclJlc3BvbnNlU291cmNlKFhN
TEh0dHBSZXF1ZXN0Kik7CisgICAgYm9vbCBpc1NoYXJpbmdTdHlsZVNoZWV0Q29udGVudHMoRWxl
bWVudCogbGlua0EsIEVsZW1lbnQqIGxpbmtCKTsKKyAgICBib29sIGlzU3R5bGVTaGVldExvYWRp
bmdTdWJyZXNvdXJjZXMoRWxlbWVudCogbGluayk7CiAgICAgdm9pZCBzZXRPdmVycmlkZUNhY2hl
UG9saWN5KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQ
cmlvcml0eShjb25zdCBTdHJpbmcmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAkocmV2aXNpb24gMTg0Mjg2KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIGVudW0gUmVzb3VyY2VM
b2FkUHJpb3JpdHkgewogICAgIGJvb2xlYW4gaXNQcmVsb2FkZWQoRE9NU3RyaW5nIHVybCk7CiAg
ICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoRE9NU3RyaW5nIHVybCk7CiAgICAg
RE9NU3RyaW5nIHhoclJlc3BvbnNlU291cmNlKFhNTEh0dHBSZXF1ZXN0IHhocik7CisgICAgYm9v
bGVhbiBpc1NoYXJpbmdTdHlsZVNoZWV0Q29udGVudHMoRWxlbWVudCBsaW5rQSwgRWxlbWVudCBs
aW5rQik7CisgICAgYm9vbGVhbiBpc1N0eWxlU2hlZXRMb2FkaW5nU3VicmVzb3VyY2VzKEVsZW1l
bnQgbGluayk7CiAgICAgdm9pZCBjbGVhck1lbW9yeUNhY2hlKCk7CiAgICAgdm9pZCBwcnVuZU1l
bW9yeUNhY2hlVG9TaXplKGxvbmcgc2l6ZSk7CiAgICAgbG9uZyBtZW1vcnlDYWNoZVNpemUoKTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NDI4NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTEzICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZWQgQ1NTIGltYWdlIHJlc291cmNlcyBk
b24ndCBzaG93IHVwIGFmdGVyIHJlbG9hZGluZyA8aHR0cDovL25pZ2h0bHkud2Via2l0Lm9yZy9z
dGFydC8+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDQ5NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvY2FjaGUvcmVzb3VyY2VzL25vbi1zaGFyZWFibGUuY3NzOiBBZGRlZC4KKyAg
ICAgICAgKCNmb28pOgorICAgICAgICAoI2Jhcik6CisgICAgICAgICgjdGVzdDEpOgorICAgICAg
ICAoI3Rlc3QyKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zaGFyZWFi
bGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKCNmb28pOgorICAgICAgICAoI2Jhcik6CisgICAgICAg
ICgjdGVzdDEpOgorICAgICAgICAoI3Rlc3QyKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hl
L3Jlc291cmNlcy9zdHlsZXNoZWV0LWh0bWwucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2NhY2hlL3N0eWxlc2hlZXQtc2hhcmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvY2FjaGUvc3R5bGVzaGVldC1zaGFyaW5nLmh0bWw6IEFkZGVkLgorCiAy
MDE1LTA1LTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAg
IGZhc3QvdGV4dC9zaW1wbGUtbGluZS1sYXlvdXQtdGV4dC1zdHJva2Utd2lkdGguaHRtbCBmYWls
cyBvbiBXaW5kb3dzCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3N0eWxlc2hl
ZXQtc2hhcmluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9zdHlsZXNoZWV0LXNoYXJpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9zdHlsZXNoZWV0LXNoYXJpbmctZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorc2hhcmVhYmxlLmNzcworUEFT
UyBzdHlsZVNoZWV0Q29udGVudHNTaGFyZWQgaXMgdHJ1ZQorbm9uLXNoYXJlYWJsZS5jc3MKK1BB
U1Mgc3R5bGVTaGVldENvbnRlbnRzU2hhcmVkIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NhY2hlL3N0eWxlc2hlZXQtc2hhcmluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvc3R5bGVzaGVldC1zaGFyaW5nLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3N0eWxlc2hlZXQtc2hhcmluZy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gd2FpdEZvclN0eWxlc2hlZXQo
aWZyYW1lLCBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB2YXIgbGluayA9IGlmcmFtZS5jb250
ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpbmsnKVswXTsKKyAgICBpZiAoaW50
ZXJuYWxzLmlzU3R5bGVTaGVldExvYWRpbmdTdWJyZXNvdXJjZXMobGluaykpIHsKKyAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHdhaXRGb3JTdHlsZXNoZWV0KGlmcmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIpIH0sIDEwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb21wbGV0
aW9uSGFuZGxlcihsaW5rKTsKK30KKworZnVuY3Rpb24gbG9hZChzcmMsIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUi
KTsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9zdHlsZXNoZWV0LWh0bWwucGhwP3NoZWV0
PSIgKyBzcmM7CisgICAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWZy
YW1lLmNvbnRlbnREb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOworICAgICAgICB3YWl0Rm9yU3R5
bGVzaGVldChpZnJhbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB9OworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKworZnVuY3Rpb24gdGVzdFNoYXJpbmcoc3Jj
LCBleHBlY3RlZCwgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbG9hZChzcmMsIGZ1bmN0aW9u
IChsaW5rQSkgeworICAgICAgICBsb2FkKHNyYywgZnVuY3Rpb24gKGxpbmtCKSB7CisgICAgICAg
ICAgICBzdHlsZVNoZWV0Q29udGVudHNTaGFyZWQgPSBpbnRlcm5hbHMuaXNTaGFyaW5nU3R5bGVT
aGVldENvbnRlbnRzKGxpbmtBLCBsaW5rQik7CisgICAgICAgICAgICBkZWJ1ZyhzcmMpOworICAg
ICAgICAgICAgaWYgKGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgic3R5
bGVTaGVldENvbnRlbnRzU2hhcmVkIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc2hvdWxkQmVGYWxzZSgic3R5bGVTaGVldENvbnRlbnRzU2hhcmVkIik7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordGVzdFNo
YXJpbmcoInNoYXJlYWJsZS5jc3MiLCB0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgdGVzdFNoYXJp
bmcoIm5vbi1zaGFyZWFibGUuY3NzIiwgZmFsc2UsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfSk7Cit9KTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm9uLXNoYXJlYWJsZS5jc3MK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvbm9u
LXNoYXJlYWJsZS5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL3Jlc291cmNlcy9ub24tc2hhcmVhYmxlLmNzcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQgQEAKKyNmb28geyBjb2xvcjogcmVkIH0KKyNiYXIgeyBjb2xvcjogYmx1ZSB9CisjdGVzdDEg
eyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmcpIH0KKyN0ZXN0
MiB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2Rpc2stY2FjaGUvcmVzb3VyY2VzL2dlbmVyYXRl
LXJlc3BvbnNlLmNnaT9Db250ZW50LVR5cGU9aW1hZ2UvcG5nJkNhY2hlLUNvbnRyb2w9bWF4LWFn
ZT0wKSB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL3Jlc291cmNlcy9zaGFy
ZWFibGUuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvcmVz
b3VyY2VzL3NoYXJlYWJsZS5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL3Jlc291cmNlcy9zaGFyZWFibGUuY3NzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNCBAQAorI2ZvbyB7IGNvbG9yOiByZWQgfQorI2JhciB7IGNvbG9yOiBibHVlIH0KKyN0ZXN0
MSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZykgfQorI3Rl
c3QyIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vZGlzay1jYWNoZS9yZXNvdXJjZXMvZ2VuZXJh
dGUtcmVzcG9uc2UuY2dpP0NvbnRlbnQtVHlwZT1pbWFnZS9wbmcmQ2FjaGUtQ29udHJvbD1tYXgt
YWdlPTEwMCkgfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMv
c3R5bGVzaGVldC1odG1sLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL3Jlc291cmNlcy9zdHlsZXNoZWV0LWh0bWwucGhwCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9yZXNvdXJjZXMvc3R5bGVzaGVldC1odG1sLnBocAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKzw/cGhwCitlY2hvICI8bGluayByZWw9c3R5
bGVzaGVldCBocmVmPSIgLiAkX0dFVFsnc2hlZXQnXSAuICI+IjsKKz8+Cis8ZGl2IGlkPXRlc3Qx
PjwvZGl2PgorPGRpdiBpZD10ZXN0Mj48L2Rpdj4K
</data>

          </attachment>
      

    </bug>

</bugzilla>