<?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>41342</bug_id>
          
          <creation_ts>2010-06-29 04:24:43 -0700</creation_ts>
          <short_desc>Move PaintInfo/PaintPhase into their own headers, out of RenderObject</short_desc>
          <delta_ts>2010-06-29 05:15:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244198</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-29 04:24:43 -0700</bug_when>
    <thetext>RenderObject is so cluttered, we could at least move PaintInfo / PaintPhase out of them, as a comment on top indicates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244202</commentid>
    <comment_count>1</comment_count>
      <attachid>60008</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-29 04:43:31 -0700</bug_when>
    <thetext>Created attachment 60008
Initial patch

Very mechnic, just search/replace and a move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244204</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-29 04:46:10 -0700</bug_when>
    <thetext>Attachment 60008 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/rendering/RenderTheme.h:176:  More than one command on the same line  [whitespace/newline] [4]
WebCore/rendering/InlineTextBox.cpp:360:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/InlineFlowBox.cpp:691:  _tx is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/rendering/InlineFlowBox.cpp:691:  _ty is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/rendering/InlineFlowBox.cpp:911:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 5 in 79 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>244205</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-29 04:46:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 60008 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
&gt; WebCore/rendering/RenderTheme.h:176:  More than one command on the same line  [whitespace/newline] [4]
&gt; WebCore/rendering/InlineTextBox.cpp:360:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
&gt; WebCore/rendering/InlineFlowBox.cpp:691:  _tx is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
&gt; WebCore/rendering/InlineFlowBox.cpp:691:  _ty is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
&gt; WebCore/rendering/InlineFlowBox.cpp:911:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
&gt; Total errors found: 5 in 79 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

These issues aren&apos;t introduced by the patch, they&apos;ve been there before, and I have no plan to change any code there, besides the renames. So please bear with those issues :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244220</commentid>
    <comment_count>4</comment_count>
      <attachid>60008</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-06-29 05:13:19 -0700</bug_when>
    <thetext>Comment on attachment 60008
Initial patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244222</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-29 05:15:58 -0700</bug_when>
    <thetext>Landed in r62104.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60008</attachid>
            <date>2010-06-29 04:43:31 -0700</date>
            <delta_ts>2010-06-29 05:13:19 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>RenderRefactor.diff</filename>
            <type>text/plain</type>
            <size>252730</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjEwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMwIEBACisyMDEwLTA2LTI5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVy
bWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgUGFpbnRJbmZvL1BhaW50UGhhc2UgaW50byB0aGVpciBvd24gaGVhZGVycywg
b3V0IG9mIFJlbmRlck9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDEzNDIKKworICAgICAgICAxKSBNb3ZlIGVudW1zIFBhaW50UGhhc2UvUGFp
bnRCZWhhdmlvckZsYWdzIGFuZCB0aGUgUGFpbnRCZWhhdmlvdXIgdHlwZWRlZiBmcm9tIFJlbmRl
ck9iamVjdCBpbnRvIFBhaW50UGhhc2UuaC4KKyAgICAgICAgICAgTW92ZSBQYWludEluZm8gZnJv
bSBSZW5kZXJPYmplY3QgaW50byBQYWludEluZm8uaC4gUmVwbGFjZSBzL1JlbmRlck9iamVjdDo6
UGFpbnRJbmZvL1BhaW50SW5mby8gdGhyb3VnaG91dCBXZWJDb3JlLy4KKyAgICAgICAgICAgQWxz
byBtb3ZlIHRoZSBPdmVybGFwVGVzdFJlcXVlc3RNYXAgdHlwZWRlZiBpbnRvIFBhaW50SW5mby5o
LCBhbmQgcmVwbGFjZSBzL1JlbmRlck9iamVjdDo6T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwL092ZXJs
YXBUZXN0UmVxdWVzdE1hcC8gZXZlcnl3aGVyZS4KKworICAgICAgICAyKSBNb3ZlICJSZW5kZXJP
YmplY3QqIHBhaW50aW5nUm9vdEZvckNoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvKSBjb25z
dCIgZnJvbSBSZW5kZXJPYmplY3QgdG8gUGFpbnRJbmZvCisgICAgICAgICAgIGFuZCBtb2RpZnkg
aXQgdG8gdGFrZSBhIHJlbmRlcmVyOiAidm9pZCB1cGRhdGVQYWludGluZ1Jvb3RGb3JDaGlsZHJl
bihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSIuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Vz
IGEgY29tbW9uIGlkaW9tOgorICAgICAgICAtICAgIGluZm8ucGFpbnRpbmdSb290ID0gcGFpbnRp
bmdSb290Rm9yQ2hpbGRyZW4ocGFpbnRJbmZvKTsKKyAgICAgICAgKyAgICBpbmZvLnVwZGF0ZVBh
aW50aW5nUm9vdEZvckNoaWxkcmVuKHRoaXMpOworCisgICAgICAgIFdlIHNhdmUgcmVzZXR0aW5n
IHRoZSBwYWludGluZ1Jvb3QgdG8gMCBpZiBpdCB3YXMgMCBhbHJlYWR5IGFuZCB0aHVzIGRvIGxl
c3Mgd29yay4KKworICAgICAgICAzKSBNb3ZlICJib29sIHNob3VsZFBhaW50V2l0aGluUm9vdChQ
YWludEluZm8mIHBhaW50SW5mbykgY29uc3QiIGZyb20gUmVuZGVyT2JqZWN0IHRvIFBhaW50SW5m
bworICAgICAgICAgICBhbmQgbW9kaWZ5IGl0IHRvIHRha2UgYSByZW5kZXJlcjogImJvb2wgc2hv
dWxkUGFpbnRXaXRoaW5Sb290KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Ii4K
KworICAgICAgICBUaGlzIGNoYW5nZXMgYSBjb21tb24gaWRpb206CisgICAgICAgIC0gICAgaWYg
KCFzaG91bGRQYWludFdpdGhpblJvb3QocGFpbnRJbmZvKSkKKyAgICAgICAgKyAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QodGhpcykpCisKKyAgICAgICAgNCkgTW92ZSAi
dm9pZCBhcHBseVRyYW5zZm9ybVRvUGFpbnRJbmZvKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvQ2hpbGRUcmFuc2Zvcm0pIgorICAgICAgICAg
ICBmcm9tIFNWR1JlbmRlclN1cHBvcnQgdG8gUGFpbnRJbmZvIGFuZCByZW5hbWUgaXQgdG8gImFw
cGx5VHJhbnNmb3JtIiwgZ3VhcmRlZCB3aXRoIEVOQUJMRShTVkcpIGJsb2Nrcy4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgYSBjb21tb24gaWRpb206CisgICAgICAgIC0gICAgYXBwbHlUcmFuc2Zv
cm1Ub1BhaW50SW5mbyhjaGlsZFBhaW50SW5mbywgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsK
KyAgICAgICAgKyAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9ybShsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkpOworCisgICAgICAgIEFkZGEgUGFpbnRJbmZvLmggLyBQYWludFBoYXNlLmgg
dG8gYWxsIGJ1aWxkIHN5c3RlbXMgdGhhdCBsaXN0IGhlYWRlcnMuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2Fu
ZHJvaWQvUmVuZGVyVGhlbWVBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhbnZh
c0Zyb21JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQW5kcm9pZDo6cGFpbnRD
aGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUFuZHJvaWQ6OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQW5kcm9pZDo6cGFpbnRSYWRpbyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUFuZHJvaWQ6OnBhaW50VGV4dEZpZWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQW5kcm9pZDo6cGFpbnRUZXh0QXJlYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUFuZHJvaWQ6OnBhaW50U2VhcmNoRmllbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludENvbWJvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQW5kcm9pZDo6cGFpbnRNZW51TGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUFuZHJvaWQ6OnBhaW50TWVudUxpc3RCdXR0b24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvUmVuZGVyVGhlbWVBbmRyb2lkLmg6CisgICAgICAgICog
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lRWZsOjpwYWludFRoZW1lUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbDo6cGFpbnRDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVudUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50VGV4dEZpZWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludFRleHRBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFp
bnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbDo6cGFpbnRTZWFyY2hGaWVsZCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhaW50TW96aWxsYUd0a1dpZGdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6cGFpbnRDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0
azo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4dEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3Rr
OjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1
L1JlbmRlclRoZW1lSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVIYWlr
dTo6cGFpbnRDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUhhaWt1Ojpw
YWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSGFpa3U6OnBhaW50TWVu
dUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L1JlbmRlclRoZW1lSGFpa3UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUGFpbnRlcjo6U3R5bGVQYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lUXQ6OnBhaW50Q2hlY2tib3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6
cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjpwYWludEJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjpwYWludFRleHRGaWVsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjpwYWludFRleHRBcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVRdDo6cGFpbnRNZW51TGlzdEJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVF0OjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lUXQ6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVRdDo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVF0OjpwYWludFNlYXJjaEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFNdXRlQnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFQbGF5QnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhU2Vla0Zvcndh
cmRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYUN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFW
b2x1bWVTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVF0OjpwYWlu
dE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVR
dDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
UXQ6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVy
VGhlbWVRdC5oOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6cGFpbnRDaGVja2JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVd4OjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lV3g6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
V3g6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV3g6OnBh
aW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXeDo6cGFpbnRNZW51
TGlzdEJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL0Vs
bGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5l
Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Rmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBh
aW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFp
bnRNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29y
YXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQ
YWludEluZm86OlBhaW50SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OnVwZGF0
ZVBhaW50aW5nUm9vdEZvckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6
c2hvdWxkUGFpbnRXaXRoaW5Sb290KToKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBw
bHlUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludFBoYXNlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpwYWludENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludEVsbGlwc2lzQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBv
c2l0aW9uZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRD
b2x1bW5zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpw
YWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRN
YXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnBlcmZvcm1PdmVybGFwVGVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRQYWdpbmF0ZWRDaGls
ZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkTGF5ZXJJ
bnRvQ29sdW1ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGluZUJveExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExp
c3Q6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFp
bnRNZWRpYU11dGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYVBsYXlCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYVNsaWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRp
YVZvbHVtZVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludE1lZGlhVm9sdW1lU2xpZGVy
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRNZWRpYVRpbWVsaW5lQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cGFpbnRNZWRp
YUNvbnRyb2xzUGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHND
aHJvbWl1bS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRo
OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpkcmF3KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290
OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJh
clBhcnQ6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVDZWxsOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBh
aW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxl
Q2VsbDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lOjpwYWludERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjpwYWludE1ldGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludENhcHNMb2NrSW5kaWNhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludENoZWNrYm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZTo6cGFpbnRJbm5lclNwaW5CdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OnBhaW50T3V0ZXJTcGluQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpw
YWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRUZXh0
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZW51TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZW51TGlzdEJ1dHRvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6cGFpbnRTZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZTo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludE1lZGlhUGxheUJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZWRpYU11dGVCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludE1lZGlhU2xpZGVyVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50TWVkaWFTbGlkZXJUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
ckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZWRpYVZv
bHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludE1l
ZGlhVm9sdW1lU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50TWVkaWFSZXdpbmRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBh
aW50TWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50TWVkaWFDb250cm9sc0JhY2tncm91bmQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50TWVkaWFDdXJyZW50VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRNZWRpYVRpbWVSZW1haW5pbmcpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNocm9taXVtTWFjOjpwYWludE1lZGlhUGxheUJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpwYWludE1lZGlhU2xpZGVyVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRNZWRp
YUNvbnRyb2xzQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9t
aXVtTWFjOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50Q2hlY2tib3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50UmFkaW8pOgorICAgICAg
ICAoV2ViQ29yZTo6cGFpbnRCdXR0b25MaWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNoRmllbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUNocm9taXVtU2tpYTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWFDb250cm9sc0JhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50
TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVt
U2tpYTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJU
aHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRN
ZWRpYVBsYXlCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNr
aWE6OnBhaW50TWVkaWFNdXRlQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjpwYWludE1lbnVMaXN0QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNsaWRlclRodW1iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFByb2dyZXNzQmFyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50UmFkaW8pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFNsaWRlclRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50TWVudUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRDYXBzTG9ja0luZGljYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRUZXh0QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRNZW51TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdy
YWRpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlz
dEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hG
aWVsZERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVBsYXlCdXR0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVNlZWtGb3J3YXJk
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2xp
ZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFT
bGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRp
YVJld2luZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYUNvbnRyb2xzQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYUN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhVGltZVJlbWFpbmlu
Zyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVGh1bWIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRE
ZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZWRpYU11dGVCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lZGlhU2Vla0Jh
Y2tCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVk
aWFTZWVrRm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
U2FmYXJpOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZVNhZmFyaS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lV2luOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhRnVsbHNj
cmVlbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRp
YU11dGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50TWVk
aWFQbGF5QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludE1l
ZGlhU2Vla0JhY2tCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBh
aW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbjo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZVdpbjo6cGFpbnRDaGVja2JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRU
ZXh0QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hG
aWVsZERlY29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBhaW50QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBhaW50VGV4dEZpZWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZW51TGlzdEJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbmNlOjpwYWludFNlYXJjaEZpZWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRTZWFyY2hGaWVsZFJl
c3VsdHNEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luY2U6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVXaW5jZTo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbmNlOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhUGxheUJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhU2Vla0JhY2tCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBhaW50TWVkaWFTbGlkZXJU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhU2xp
ZGVyVGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbmNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbmNlOjpwYWludENoZWNrYm94KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lV2luY2U6OnBhaW50UmFkaW8pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRUZXh0QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVdpbmNlOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6cGFpbnRFbGxpcHNpc0JveCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpwYWludEN1c3RvbUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpmaWxsTGluZVNlbGVj
dGlvbkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bmxpbmVGbG93Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR0lubGluZUZsb3dC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHTWFya2VyTGF5b3V0
SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJMYXlvdXRJbmZvOjpkcmF3TWFy
a2Vycyk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR01hcmtlckxheW91dEluZm8uaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZW5kZXJCYXNlOjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVuZGVyU3VidHJlZVRvSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9TVkdSb290SW5saW5lQm94Lmg6CisKIDIwMTAtMDYtMjkgIE5pa29sYXMgWmltbWVy
bWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBTb3J0
IFhjb2RlIHByb2plY3QgZmlsZS4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIzLDYgKzE5MjMsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmggXAog
CVdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmggXAogCVdlYkNvcmUvcmVu
ZGVyaW5nL092ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9Q
YWludEluZm8uaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oIFwKIAlXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJB
cHBsZXQuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXJlbmEuY3BwIFwKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTQ4LDYgKzMxNDgsOCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5o
JywKICAgICAgICAgICAgICdyZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuaCcsCisgICAgICAgICAg
ICAncmVuZGVyaW5nL1BhaW50SW5mby5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUGFpbnRQ
aGFzZS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNw
cCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oJywKICAg
ICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcCcsCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDYy
MDk5KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTczNiw2ICsx
NzM2LDggQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBcCiAg
ICAgcmVuZGVyaW5nL0xheW91dFN0YXRlLmggXAogICAgIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oIFwKKyAgICByZW5kZXJpbmcvUGFpbnRJbmZvLmggXAorICAgIHJlbmRlcmluZy9Q
YWludFBoYXNlLmggXAogICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckFwcGxldC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQXJlbmEu
aCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDYy
MDk5KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjg2OTcsNiArMjg2OTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFBhaW50SW5mby5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XFBhaW50UGhhc2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA2MjEwMikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDggQEAKIAkJMDg4MjBC
REYwRUY1RDM4MTAwOTA5OUE4IC8qIFdNTFRhYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4MjBCREQwRUY1RDM4MTAwOTA5OUE4IC8q
IFdNTFRhYmxlRWxlbWVudC5oICovOyB9OwogCQkwODg0NTExNTBGMjY3QjYzMDA3RjEzOUUgLyog
V01MSW5wdXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4ODQ1MTEzMEYyNjdCNjIwMDdGMTM5RSAvKiBXTUxJbnB1dEVsZW1lbnQuY3Bw
ICovOyB9OwogCQkwODg0NTExNjBGMjY3QjYzMDA3RjEzOUUgLyogV01MSW5wdXRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg0NTExNDBG
MjY3QjYzMDA3RjEzOUUgLyogV01MSW5wdXRFbGVtZW50LmggKi87IH07CisJCTA4ODUwNjdGMTFE
QTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwODg1
MDY4MDExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBh
aW50UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwODhDOTcxMjBFQ0I2RDkyMDAwNTM0QkEgLyogV01MTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNENBM0FCNDkwRTU1NkYyNDAwRTlD
MEMwIC8qIFdNTE5hbWVzLmNwcCAqLzsgfTsKIAkJMDg4Qzk3MTMwRUNCNkQ5RDAwMDUzNEJBIC8q
IFdNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Q0EzQUI0ODBFNTU2RjI0MDBFOUMwQzAgLyogV01MTmFtZXMuaCAqLzsgfTsKIAkJMDg4Qzk3
NTEwRUNCNkUyODAwMDUzNEJBIC8qIFdNTEFFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRDNkI5OTE4MEU1MkUzNzMwMDQ4N0JCNyAvKiBX
TUxBRWxlbWVudC5jcHAgKi87IH07CkBAIC01NzAwLDYgKzU3MDIsOCBAQAogCQkwODgyMEJERDBF
RjVEMzgxMDA5MDk5QTggLyogV01MVGFibGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdNTFRhYmxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODg0NTExMzBGMjY3QjYyMDA3RjEzOUUgLyogV01MSW5wdXRFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTElucHV0RWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODQ1MTE0MEYyNjdCNjMwMDdGMTM5RSAvKiBX
TUxJbnB1dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MSW5w
dXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4ODUwNjdEMTFEQTA0
NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFpbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4ODUwNjdFMTFE
QTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhaW50UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg5M0U0
NjUwRUNCNjhGNDAwQTI4NTYzIC8qIFdNTFBhZ2VTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXTUxQYWdlU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwODkzRTQ2NjBFQ0I2OEY0MDBBMjg1NjMgLyogV01MUGFnZVN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdNTFBhZ2VTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODk1ODI1MzBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTg3NSw5ICs1ODc5LDkgQEAKIAkJ
MTkyMTMyNzExMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTkyMTMyNzIxMUMw
RTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE5MjEzMjczMTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
OUJGRjY0NjExQzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBET01TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxOUJGRjY0NjExQzBGMkFDMDBCOEMwNEQg
LyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTlCRkY2NDcxMUMwRjJBQzAwQjhDMDREIC8qIERPTVNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTE5QkZGNjQ4MTFDMEYyQUMwMEI4QzA0RCAvKiBET01TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gRE9NU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxOUJGRjY0ODExQzBGMkFDMDBCOEMwNEQgLyogRE9NU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE5QkZGNjQ5MTFDMEYyQUMwMEI4QzA0RCAvKiBKU1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
OUJGRjY0QTExQzBGMkFDMDBCOEMwNEQgLyogSlNTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUw
MDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPdmVyZmxvd0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE2NDU0LDYgKzE2NDU4LDggQEAKIAkJCQlBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyog
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwICovLAogCQkJCUFCRkU3RTExMEQzMkZBRjUwMDY2RjRE
MiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovLAogCQkJCTM3NzRBQkEzMEZBMjFFQjQwMEFE
N0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCAqLywKKwkJCQkwODg1MDY3RDExREEw
NDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi8sCisJCQkJMDg4NTA2N0UxMURBMDQ1QjAwMTgy
Qjk4IC8qIFBhaW50UGhhc2UuaCAqLywKIAkJCQlCMkIxRjcxNDBEMDBDQUE4MDA0QUVBNjQgLyog
UG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCAqLywKIAkJCQlCMkIxRjcxNTBEMDBDQUE4MDA0QUVB
NjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmggKi8sCiAJCQkJQkNFQTQ4MUMwOTdEOTMwMjAw
OTRDOUU0IC8qIFJlbmRlckFwcGxldC5jcHAgKi8sCkBAIC0xODg4NSw2ICsxODg5MSw4IEBACiAJ
CQkJN0E2NzRCREMwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTEyODRBRTExMDQ0N0Q0NTAwRUFFQjUyIC8qIFBhZ2VUcmFuc2l0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTFFQ0MzMEM5MUM5MDQwMERDMjU1QiAv
KiBQYWdlVVJMUmVjb3JkLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODg1MDY3RjExREEwNDVCMDAx
ODJCOTggLyogUGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwODg1MDY4MDExREEwNDVC
MDAxODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkIwQTE5
ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzZBQzEzMEREN0FE
NUMwMDQxNUYzNCAvKiBQYXJzZXJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMjcw
OEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9SZW5kZXJUaGVtZUFuZHJvaWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9SZW5kZXJUaGVtZUFuZHJvaWQuY3BwCShy
ZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9SZW5kZXJUaGVtZUFu
ZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIGNvbnN0IGludCBsaXN0
Ym94UGFkZGluZyA9IDU7CiAvLyB0aGUgY29sb3Igb2Ygc2VsZWN0aW9uIGluIFRleHRWaWV3cyBp
biB0aGUgc3lzdGVtLgogY29uc3QgUkdCQTMyIHNlbGVjdGlvbkNvbG9yID0gbWFrZVJHQigyNTUs
IDE0NiwgMCk7CiAKLXN0YXRpYyBTa0NhbnZhcyogZ2V0Q2FudmFzRnJvbUluZm8oY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIGluZm8pCitzdGF0aWMgU2tDYW52YXMqIGdldENhbnZhc0Zy
b21JbmZvKGNvbnN0IFBhaW50SW5mbyYgaW5mbykKIHsKICAgICByZXR1cm4gaW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+bUNhbnZhczsKIH0KQEAgLTIwNCwxMyArMjA0LDEzIEBAIHZv
aWQgUmVuZGVyVGhlbWVBbmRyb2lkOjphZGp1c3RCdXR0b25TdHkKICAgICBzdHlsZS0+c2V0TWlu
SGVpZ2h0KExlbmd0aChzdHlsZS0+Zm9udFNpemUoKSArIGJ1dHRvblBhZGRpbmcsIEZpeGVkKSk7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludENoZWNrYm94KFJlbmRlck9iamVj
dCogb2JqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVj
dCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludENoZWNrYm94KFJlbmRlck9i
amVjdCogb2JqLCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
CiAgICAgUmVuZGVyU2tpblJhZGlvOjpEcmF3KGdldENhbnZhc0Zyb21JbmZvKGluZm8pLCBvYmot
Pm5vZGUoKSwgcmVjdCwgdHJ1ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRl
clRoZW1lQW5kcm9pZDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmosIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5k
ZXJUaGVtZUFuZHJvaWQ6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBQYWlu
dEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSWYgaXQgaXMgYSBk
aXNhYmxlZCBidXR0b24sIHNpbXBseSBwYWludCBpdCB0byB0aGUgbWFzdGVyIHBpY3R1cmUuCiAg
ICAgTm9kZSogbm9kZSA9IG9iai0+bm9kZSgpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVBbmRyb2lkOjpwYWludEJ1dHRvbihSZW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogb2JqLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkK
K2Jvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogb2JqLCBj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUmVuZGVy
U2tpblJhZGlvOjpEcmF3KGdldENhbnZhc0Zyb21JbmZvKGluZm8pLCBvYmotPm5vZGUoKSwgcmVj
dCwgZmFsc2UpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFJl
bmRlclRoZW1lQW5kcm9pZDo6YWRqdXN0VGV4dEZpZWxkCiAgICAgYWRkSW50cmluc2ljTWFyZ2lu
cyhzdHlsZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludFRleHRGaWVsZChS
ZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKQorYm9vbCBSZW5kZXJUaGVtZUFuZHJvaWQ6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQogewogICAgIHJldHVybiB0cnVl
OyAgICAKIH0KQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFJlbmRlclRoZW1lQW5kcm9pZDo6YWRq
dXN0VGV4dEFyZWFTCiAgICAgYWRkSW50cmluc2ljTWFyZ2lucyhzdHlsZSk7CiB9CiAKLWJvb2wg
UmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogb2JqLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jv
b2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogb2JqLCBj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFv
YmotPmlzTGlzdEJveCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxOCw3ICszMTgsNyBA
QCB2b2lkIFJlbmRlclRoZW1lQW5kcm9pZDo6YWRqdXN0U2VhcmNoRmllCiAgICAgYWRkSW50cmlu
c2ljTWFyZ2lucyhzdHlsZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludFNl
YXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpCitib29sIFJlbmRlclRoZW1lQW5kcm9pZDo6cGFpbnRTZWFyY2hGaWVs
ZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsgICAgCiB9CkBAIC0zNDQsMTQgKzM0NCwxNCBAQCB2b2lkIFJlbmRlclRo
ZW1lQW5kcm9pZDo6YWRqdXN0TWVudUxpc3RTCiAgICAgYWRkSW50cmluc2ljTWFyZ2lucyhzdHls
ZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludENvbWJvKFJlbmRlck9iamVj
dCogb2JqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaW5mbywgIGNvbnN0IEludFJl
Y3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lQW5kcm9pZDo6cGFpbnRDb21ibyhSZW5kZXJPYmpl
Y3QqIG9iaiwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCAgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICBpZiAob2JqLT5zdHlsZSgpICYmICFvYmotPnN0eWxlKCktPmJhY2tncm91bmRDb2xvcigp
LmFscGhhKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBSZW5kZXJTa2luQ29t
Ym86OkRyYXcoZ2V0Q2FudmFzRnJvbUluZm8oaW5mbyksIG9iai0+bm9kZSgpLCByZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVBbmRyb2lkOjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkgCitib29sIFJl
bmRlclRoZW1lQW5kcm9pZDo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG9iaiwgY29uc3Qg
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KSAKIHsgCiAgICAgcmV0dXJuIHBh
aW50Q29tYm8ob2JqLCBpbmZvLCByZWN0KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFJl
bmRlclRoZW1lQW5kcm9pZDo6YWRqdXN0TWVudUxpc3RCCiAgICAgYWRqdXN0TWVudUxpc3RTdHls
ZUNvbW1vbihzdHlsZSwgZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVBbmRyb2lkOjpwYWludE1l
bnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogb2JqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkgCitib29sIFJlbmRlclRoZW1lQW5kcm9p
ZDo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqIG9iaiwgY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KSAKIHsKICAgICByZXR1cm4gcGFpbnRDb21ibyhv
YmosIGluZm8sIHJlY3QpOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL1JlbmRl
clRoZW1lQW5kcm9pZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9S
ZW5kZXJUaGVtZUFuZHJvaWQuaAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2FuZHJvaWQvUmVuZGVyVGhlbWVBbmRyb2lkLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDMyICs3
NCwzMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShSZW5k
ZXJTdHlsZSopIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
Ym9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRp
byhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgdmly
dHVhbCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBXZWJDb3Jl
OjpFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRl
ck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4
dEFyZWFTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBXZWJDb3JlOjpFbGVt
ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogICAgIAotICAgIGJvb2wgcGFpbnRDb21ibyhSZW5kZXJPYmpl
Y3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsICBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgYm9vbCBwYWludENvbWJvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsICBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TGlzdGJveFN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVM
aXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiBwcml2YXRlOgogICAgIFJlbmRlclRoZW1lQW5kcm9p
ZCgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAkocmV2aXNp
b24gNjIwOTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBs
eUVkamVTdGF0ZUZyb21GCiAgICAgfQogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRo
ZW1lUGFydChSZW5kZXJPYmplY3QqIG8sIEZvcm1UeXBlIHR5cGUsIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVm
bDo6cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiBvLCBGb3JtVHlwZSB0eXBlLCBjb25zdCBQ
YWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgc3RydWN0IFRoZW1lUGFy
dENhY2hlRW50cnkqIGNlOwogICAgIEVpbmFfTGlzdCogdXBkYXRlczsKQEAgLTc0Niw3ICs3NDYs
NyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlCiAgICAgICAgIHN0
eWxlLT5zZXRIZWlnaHQoZGVzYy0+bWluLmhlaWdodCgpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVt
ZUVmbDo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6
cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQobywgQ2hlY2tCb3gs
IGksIHJlY3QpOwogfQpAQCAtNzY3LDcgKzc2Nyw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFk
anVzdFJhZGlvU3R5bGUoQ1MKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChkZXNjLT5taW4uaGVp
Z2h0KCkpOwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFJhZGlvKFJlbmRlck9iamVj
dCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29u
c3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBwYWlu
dFRoZW1lUGFydChvLCBSYWRpb0J1dHRvbiwgaSwgcmVjdCk7CiB9CkBAIC03OTAsNyArNzkwLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUoQwogICAgIH0KIH0KIAot
Ym9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBwYWludFRoZW1lUGFydChv
LCBCdXR0b24sIGksIHJlY3QpOwogfQpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVFZmw6OmFkanVzdE1lbnVMaXN0U3R5bGUKICAgICBzdHlsZS0+c2V0QmFja2dyb3VuZENvbG9y
KG1fY29tYm9UZXh0QmFja2dyb3VuZENvbG9yKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6
cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRN
ZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQobywgQ29tYm9Cb3gsIGksIHJl
Y3QpOwogfQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRl
eHRGaWVsZFN0eWwKICAgICBzdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKG1fZW50cnlUZXh0QmFj
a2dyb3VuZENvbG9yKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUZXh0RmllbGQo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGV4dEZpZWxkKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIHJldHVybiBwYWludFRoZW1lUGFydChvLCBUZXh0RmllbGQsIGksIHJlY3QpOwogfQpAQCAt
ODM2LDcgKzgzNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRleHRBcmVhU3R5bGUK
ICAgICBhZGp1c3RUZXh0RmllbGRTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogfQogCi1ib29s
IFJlbmRlclRoZW1lRWZsOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBpLCBy
KTsKIH0KQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFy
Y2hGaWVsZERlCiAgICAgc3R5bGUtPnNldFdoaXRlU3BhY2UoUFJFKTsKIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJl
dHVybiBwYWludFRoZW1lUGFydChvLCBTZWFyY2hGaWVsZERlY29yYXRpb24sIGksIHJlY3QpOwog
fQpAQCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZp
ZWxkUmUKICAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUpOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9v
bCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
cmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbiwgaSwgcmVj
dCk7CiB9CkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2Vh
cmNoRmllbGRSZQogICAgIHN0eWxlLT5zZXRXaGl0ZVNwYWNlKFBSRSk7CiB9CiAKLWJvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIHJldHVybiBwYWludFRoZW1lUGFydChvLCBTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uLCBpLCByZWN0KTsKIH0KQEAgLTkwMCw3ICs5MDAsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhCiAgICAgc3R5bGUtPnNldFdoaXRlU3BhY2UoUFJF
KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQobywgU2VhcmNoRmllbGRD
YW5jZWxCdXR0b24sIGksIHJlY3QpOwogfQpAQCAtOTE4LDcgKzkxOCw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkU3QKICAgICBzdHlsZS0+c2V0QmFja2dyb3VuZENv
bG9yKG1fc2VhcmNoVGV4dEJhY2tncm91bmRDb2xvcik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIFNlYXJj
aEZpZWxkLCBpLCByZWN0KTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMzcgKzEwMywzNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0aW9uJikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hlY2tib3hTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVh
bCB2b2lkIGFkanVzdFJhZGlvU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRG
aWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lk
IGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlv
blN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0
b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUNhbnZhcygpOwpAQCAtMTQyLDcgKzE0
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseVBhcnREZXNjcmlwdGlvbnMoKTsKICAgICBj
b25zdCBjaGFyKiBlZGplR3JvdXBGcm9tRm9ybVR5cGUoRm9ybVR5cGUgdHlwZSkgY29uc3Q7CiAg
ICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBvLCBDb250cm9sU3Rh
dGVzIHN0YXRlcyk7Ci0gICAgYm9vbCBwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqIG8sIEZv
cm1UeXBlIHR5cGUsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByZWN0KTsKKyAgICBib29sIHBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCogbywgRm9y
bVR5cGUgdHlwZSwgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIAog
ICAgIFBhZ2UqIG1fcGFnZTsKICAgICBDb2xvciBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAJKHJldmlz
aW9uIDYyMDk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgc3RhdGljIHZvaWQgc2V0TW96aWxsYVN0
YXRlKGNvbnN0IFJlbmRlcgogICAgICAgICBzdGF0ZS0+ZGVwcmVzc2VkID0gZmFsc2U7CiB9CiAK
LXN0YXRpYyBib29sIHBhaW50TW96aWxsYUd0a1dpZGdldChjb25zdCBSZW5kZXJUaGVtZUd0ayog
dGhlbWUsIEd0a1RoZW1lV2lkZ2V0VHlwZSB0eXBlLCBSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIGJv
b2wgcGFpbnRNb3ppbGxhR3RrV2lkZ2V0KGNvbnN0IFJlbmRlclRoZW1lR3RrKiB0aGVtZSwgR3Rr
VGhlbWVXaWRnZXRUeXBlIHR5cGUsIFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIFBhaW50aW5nIGlzIGRpc2FibGVkIHNv
IGp1c3QgY2xhaW0gdG8gaGF2ZSBzdWNjZWVkZWQKICAgICBpZiAoaS5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6c2V0
Q2hlY2tib3hTaXplKFJlbgogICAgIHNldFRvZ2dsZVNpemUodGhpcywgc3R5bGUsIFJhZGlvUGFy
dCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK2Jvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIHBh
aW50TW96aWxsYUd0a1dpZGdldCh0aGlzLCBNT1pfR1RLX0NIRUNLQlVUVE9OLCBvLCBpLCByZWN0
KTsKIH0KQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjpzZXRSYWRpb1Np
emUoUmVuZGVyCiAgICAgc2V0VG9nZ2xlU2l6ZSh0aGlzLCBzdHlsZSwgUmFkaW9QYXJ0KTsKIH0K
IAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFpbnRNb3ppbGxhR3Rr
V2lkZ2V0KHRoaXMsIE1PWl9HVEtfUkFESU9CVVRUT04sIG8sIGksIHJlY3QpOwogfQpAQCAtNDQw
LDcgKzQ0MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdEJ1dHRvblN0eWxlKEMKICAg
ICB9CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lR3RrOjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFpbnRN
b3ppbGxhR3RrV2lkZ2V0KHRoaXMsIE1PWl9HVEtfQlVUVE9OLCBvLCBpLCByZWN0KTsKIH0KQEAg
LTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RNZW51TGlzdFN0eWxl
CiAgICAgYWRqdXN0TW96aWxsYVN0eWxlKHRoaXMsIHN0eWxlLCBNT1pfR1RLX0RST1BET1dOKTsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQor
Ym9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFpbnRN
b3ppbGxhR3RrV2lkZ2V0KHRoaXMsIE1PWl9HVEtfRFJPUERPV04sIG8sIGksIHJlY3QpOwogfQpA
QCAtNDY4LDEyICs0NjgsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0VGV4dEZpZWxk
U3R5bAogICAgIGFkanVzdE1vemlsbGFTdHlsZSh0aGlzLCBzdHlsZSwgTU9aX0dUS19FTlRSWSk7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcGFp
bnRNb3ppbGxhR3RrV2lkZ2V0KHRoaXMsIE1PWl9HVEtfRU5UUlksIG8sIGksIHJlY3QpOwogfQog
Ci1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIHJldHVybiBwYWludFRleHRGaWVsZChv
LCBpLCByKTsKIH0KQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1
c3RTZWFyY2hGaWVsZFJlCiAgICAgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShz
ZWxlY3Rvciwgc3R5bGUsIGUpOwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIHBhaW50TW96aWxs
YUd0a1dpZGdldCh0aGlzLCBNT1pfR1RLX0RST1BET1dOX0FSUk9XLCBvLCBpLCByZWN0KTsKIH0K
QEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTZWFyY2hGaWVs
ZFJlCiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIHBhaW50TW96aWxsYUd0a1dpZGdldCh0
aGlzLCBNT1pfR1RLX0NIRUNLTUVOVUlURU0sIG8sIGksIHJlY3QpOwogfQpAQCAtNTE1LDcgKzUx
NSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkQ2EKICAgICBzdHls
ZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi1ib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIHJldHVybiBwYWludE1vemlsbGFHdGtXaWRnZXQodGhpcywgTU9aX0dUS19DSEVDS01FTlVJ
VEVNLCBvLCBpLCByZWN0KTsKIH0KQEAgLTUyNSwxMiArNTI1LDEyIEBAIHZvaWQgUmVuZGVyVGhl
bWVHdGs6OmFkanVzdFNlYXJjaEZpZWxkU3QKICAgICBhZGp1c3RUZXh0RmllbGRTdHlsZShzZWxl
Y3Rvciwgc3R5bGUsIGUpOwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxk
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBpLCByZWN0KTsKIH0KIAotYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiti
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQ29u
dHJvbFBhcnQgcGFydCA9IG9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogICAgIEFTU0VS
VChwYXJ0ID09IFNsaWRlckhvcml6b250YWxQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQ
YXJ0KTsKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlk
ZXJUcmFja1N0CiAgICAgc3R5bGUtPnNldEJveFNoYWRvdygwKTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZUd0azo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25z
dCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQ29udHJvbFBh
cnQgcGFydCA9IG9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogICAgIEFTU0VSVChwYXJ0
ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRp
Y2FsUGFydCk7CkBAIC03NDYsMTIgKzc0NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFpbnRN
ZWRpYUJ1dHRvbihHcmFwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAg
IHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByLCBtX2Z1bGxzY3Jl
ZW5CdXR0b24uZ2V0KCksIG1fcGFuZWxDb2xvciwgbV9tZWRpYUljb25TaXplKTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBnZXRNZWRpYUVsZW1lbnRGcm9tUmVu
ZGVyT2JqZWN0KG8pOwogICAgIGlmICghbWVkaWFFbGVtZW50KQpAQCAtNzYwLDcgKzc2MCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0dG8KICAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgciwgbWVkaWFFbGVtZW50LT5tdXRlZCgp
ID8gbV91bm11dGVCdXR0b24uZ2V0KCkgOiBtX211dGVCdXR0b24uZ2V0KCksIG1fcGFuZWxDb2xv
ciwgbV9tZWRpYUljb25TaXplKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRp
YVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFp
bnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSBnZXRNZWRpYUVsZW1lbnRGcm9tUmVuZGVyT2JqZWN0KG8pOwogICAgIGlmICghbWVk
aWFFbGVtZW50KQpAQCAtNzY5LDE3ICs3NjksMTcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFp
bnRNZWRpYVBsYXlCdXR0bwogICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5j
b250ZXh0LCByLCBtZWRpYUVsZW1lbnQtPmNhblBsYXkoKSA/IG1fcGxheUJ1dHRvbi5nZXQoKSA6
IG1fcGF1c2VCdXR0b24uZ2V0KCksIG1fcGFuZWxDb2xvciwgbV9tZWRpYUljb25TaXplKTsKIH0K
IAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9i
amVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQogewogICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0
LCByLCBtX3NlZWtCYWNrQnV0dG9uLmdldCgpLCBtX3BhbmVsQ29sb3IsIG1fbWVkaWFJY29uU2l6
ZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vl
a0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWlu
dEluZm8uY29udGV4dCwgciwgbV9zZWVrRm9yd2FyZEJ1dHRvbi5nZXQoKSwgbV9wYW5lbENvbG9y
LCBtX21lZGlhSWNvblNpemUpOwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlh
U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFp
bnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAKQEAgLTgyNCw3ICs4MjQsNyBAQCBib29sIFJlbmRlclRo
ZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAg
ICAgLy8gTWFrZSB0aGUgdGh1bWIgbmljZXIgd2l0aCByb3VuZGVkIGNvcm5lcnMuCiAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChyLCBJbnRTaXplKDMsIDMpLCBJbnRTaXpl
KDMsIDMpLCBJbnRTaXplKDMsIDMpLCBJbnRTaXplKDMsIDMpLCBtX3NsaWRlclRodW1iQ29sb3Is
IERldmljZUNvbG9yU3BhY2UpOwpAQCAtODUyLDcgKzg1Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVH
dGs6OmFkanVzdFByb2dyZXNzQmFyU3QKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KDApOwogfQog
Ci1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFyZW5kZXJPYmplY3QtPmlzUHJvZ3Jlc3Mo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lR3RrLmgJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTkgKzkzLDU5IEBAIHB1YmxpYzoKICAg
ICBHdGtUaGVtZVBhcnRzKiBwYXJ0c0ZvckRyYXdhYmxlKEdka0RyYXdhYmxlKikgY29uc3Q7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcik7CiAgICAgdmlydHVhbCB2b2lkIHNldENoZWNr
Ym94U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHBh
aW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYg
aSwgY29uc3QgSW50UmVjdCYgcik7CisgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4
dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVu
ZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNo
RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHBh
aW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlk
ZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0KiBvYmplY3QpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIHZpcnR1YWwgdm9pZCBpbml0TWVkaWFTdHlsaW5nKEd0a1N0eWxlKiBzdHlsZSwg
Ym9vbCBmb3JjZSk7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1l
ZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlkZXJU
aHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRl
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRlclRyYWNr
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBST0dSRVNT
X1RBRykKICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dy
ZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0
aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVz
c0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vaGFpa3UvUmVuZGVyVGhlbWVIYWlrdS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9SZW5kZXJUaGVtZUhhaWt1LmNwcAko
cmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2hhaWt1L1JlbmRlclRoZW1lSGFp
a3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUhhaWt1OjpzeXN0ZW1Gb250KGludCBwcgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVIYWlrdTo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgaW50UmVjdCkKK2Jv
b2wgUmVuZGVyVGhlbWVIYWlrdTo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIGludFJlY3QpCiB7CiAgICAgaWYgKGluZm8u
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MzksNyArMTM5LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUhhaWt1OjpzZXRDaGVja2JveFNpemUoUgog
ICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLCBGaXhlZCkpOwogfQogCi1ib29s
IFJlbmRlclRoZW1lSGFpa3U6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIGludFJlY3QpCitib29sIFJl
bmRlclRoZW1lSGFpa3U6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBJbnRSZWN0JiBpbnRSZWN0KQogewogICAgIGlmIChpbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY5LDcgKzE2
OSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVIYWlrdTo6YWRqdXN0TWVudUxpc3RTdHkKICAgICBzdHls
ZS0+c2V0TWluSGVpZ2h0KExlbmd0aChtaW5IZWlnaHQsIEZpeGVkKSk7CiB9CiAKLWJvb2wgUmVu
ZGVyVGhlbWVIYWlrdTo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQorYm9vbCBSZW5kZXJUaGVtZUhhaWt1
OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9SZW5kZXJUaGVtZUhhaWt1LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9SZW5kZXJUaGVtZUhhaWt1LmgJKHJldmlzaW9uIDYy
MDk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9SZW5kZXJUaGVtZUhhaWt1LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE0ICs1NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KGludCBwcm9wSWQsIEZvbnREZXNjcmlwdGlvbiYpIGNv
bnN0OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2Jv
eChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICAgICAgdmlydHVh
bCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlv
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50
TWVudUxpc3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVR
dC5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAKLVN0eWxlUGFpbnRlcjo6U3R5bGVQ
YWludGVyKFJlbmRlclRoZW1lUXQqIHRoZW1lLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmZvKQorU3R5bGVQYWludGVyOjpTdHlsZVBhaW50ZXIoUmVuZGVyVGhlbWVRdCog
dGhlbWUsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAgIGluaXQocGFpbnRJbmZv
LmNvbnRleHQgPyBwYWludEluZm8uY29udGV4dCA6IDAsIHRoZW1lLT5xU3R5bGUoKSk7CiB9CkBA
IC00MzcsNyArNDM3LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVF0OjpzZXRDaGVja2JveFNpemUoUmVu
ZAogICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZVF0OjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lUXQ6OnBh
aW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IElu
dFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIHBhaW50QnV0dG9uKG8sIGksIHIpOwogfQpAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgUmVuZGVyVGhlbWVRdDo6c2V0UmFkaW9TaXplKFJlbmRlclMKICAg
ICBjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShzdHlsZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVR
dDo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFJhZGlv
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQog
ewogICAgIHJldHVybiBwYWludEJ1dHRvbihvLCBpLCByKTsKIH0KQEAgLTUzMSw3ICs1MzEsNyBA
QCB2b2lkIFJlbmRlclRoZW1lUXQ6OnNldEJ1dHRvblBhZGRpbmcoUmVuCiAgICAgc3R5bGUtPnNl
dFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmdCb3R0b20sIEZpeGVkKSk7CiB9CiAKLWJvb2wg
UmVuZGVyVGhlbWVRdDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVR
dDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgU3R5bGVQYWludGVyIHAodGhpcywgaSk7CiAgICAgaWYgKCFw
LmlzVmFsaWQoKSkKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVz
dFRleHRGaWVsZFN0eWxlCiAgICAgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoc3R5bGUpOwogfQog
Ci1ib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJl
bmRlclRoZW1lUXQ6OnBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFN0eWxlUGFpbnRlciBwKHRoaXMsIGkp
OwogICAgIGlmICghcC5pc1ZhbGlkKCkpCkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZVF0OjphZGp1c3RUZXh0QXJlYVN0eWxlKAogICAgIGFkanVzdFRleHRGaWVsZFN0eWxlKHNl
bGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRU
ZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFRleHRBcmVhKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewog
ICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBpLCByKTsKIH0KQEAgLTYzMyw3ICs2MzMsNyBA
QCB2b2lkIFJlbmRlclRoZW1lUXQ6OnNldFBvcHVwUGFkZGluZyhSZW5kCiB9CiAKIAotYm9vbCBS
ZW5kZXJUaGVtZVF0OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1l
UXQ6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHIpCiB7CiAgICAgU3R5bGVQYWludGVyIHAodGhpcywgaSk7CiAgICAgaWYg
KCFwLmlzVmFsaWQoKSkKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFk
anVzdE1lbnVMaXN0QnV0dG9uCiAgICAgc2V0UG9wdXBQYWRkaW5nKHN0eWxlKTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZVF0OjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksCitib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50
TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcikKIHsK
ICAgICBTdHlsZVBhaW50ZXIgcCh0aGlzLCBpKTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFJl
bmRlclRoZW1lUXQ6OmFkanVzdFByb2dyZXNzQmFyU3R5CiAgICAgc3R5bGUtPnNldEJveFNoYWRv
dygwKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9i
amVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBpLCBjb25zdCBJbnRSZWN0
JiByKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBwaSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBpZiAoIW8t
PmlzUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NjksNyArNzY5LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFByb2dyZXNzQmFyKFJlbgogfQogI2VuZGlmCiAKLWJv
b2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwaSwKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBT
dHlsZVBhaW50ZXIgcCh0aGlzLCBwaSk7CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZVF0OjphZGp1c3RTbGlkZXJUcmFja1N0eQogICAgIHN0eWxlLT5zZXRCb3hTaGFkb3coMCk7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwaSwKK2Jvb2wgUmVuZGVyVGhlbWVR
dDo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcikK
IHsKICAgICAvLyBXZSd2ZSBhbHJlYWR5IHBhaW50ZWQgaXQgaW4gcGFpbnRTbGlkZXJUcmFjaygp
LCBubyBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmUuCkBAIC04MzUsNyArODM1LDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUaHVtYlN0eQogICAgIHN0eWxlLT5zZXRCb3hTaGFk
b3coMCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwaSwKK2Jvb2wgUmVuZGVy
VGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIFJlbmRl
clRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkQ2FuCiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBpLAorYm9vbCBSZW5kZXJUaGVt
ZVF0OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBwaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbnRSZWN0JiByKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC04
NjksNyArODY5LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RTZWFyY2hGaWVsZERlYwog
ICAgIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShzZWxlY3Rv
ciwgc3R5bGUsIGUpOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGRE
ZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
IHBpLAorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVz
dFNlYXJjaEZpZWxkUmVzCiAgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0RlY29yYXRpb25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lUXQ6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwaSwKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBwaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
QEAgLTEwNDIsMTIgKzEwNDIsMTIgQEAgUUNvbG9yIFJlbmRlclRoZW1lUXQ6OmdldE1lZGlhQ29u
dHJvbEZvcgogICAgIHJldHVybiBmZ0NvbG9yOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBh
aW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVy
VGhlbWVRdDo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKG8sIHBhaW50SW5mbywgcik7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IGdldE1lZGlhRWxlbWVu
dEZyb21SZW5kZXJPYmplY3Qobyk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCkBAIC0xMDcxLDcg
KzEwNzEsNyBAQCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFNdXRlQnV0dG9uCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFQbGF5QnV0
dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYVBs
YXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBn
ZXRNZWRpYUVsZW1lbnRGcm9tUmVuZGVyT2JqZWN0KG8pOwogICAgIGlmICghbWVkaWFFbGVtZW50
KQpAQCAtMTA5OCwxOSArMTA5OCwxOSBAQCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFQ
bGF5QnV0dG9uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBh
aW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1l
ZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYWludCB0aGlzIGF0IHRoZSBt
b21lbnQuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50
TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1l
ZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYWludCB0aGlzIGF0IHRo
ZSBtb21lbnQuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBh
aW50TWVkaWFDdXJyZW50VGltZShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1l
UXQ6OnBhaW50TWVkaWFDdXJyZW50VGltZShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFN0eWxlUGFpbnRlciBwKHRo
aXMsIHBhaW50SW5mbyk7CiAgICAgaWYgKCFwLmlzVmFsaWQoKSkKQEAgLTExMzIsNyArMTEzMiw3
IEBAIFN0cmluZyBSZW5kZXJUaGVtZVF0Ojpmb3JtYXRNZWRpYUNvbnRyb2wKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCAqbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gJnBh
aW50SW5mbywgY29uc3QgSW50UmVjdCAmcikKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRp
YVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCAqbywgY29uc3QgUGFpbnRJbmZvICZwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QgJnIpCiB7CiAgICAgU3R5bGVQYWludGVyIHAodGhpcywgcGFp
bnRJbmZvKTsKICAgICBpZiAoIXAuaXNWYWxpZCgpKQpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhVm9sdW1lU2xpZAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0ICpvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyAmcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0ICZyKQorYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVGh1bWIoUmVuZGVyT2JqZWN0ICpvLCBjb25zdCBQYWludEluZm8gJnBhaW50SW5mbywgY29u
c3QgSW50UmVjdCAmcikKIHsKICAgICBTdHlsZVBhaW50ZXIgcCh0aGlzLCBwYWludEluZm8pOwog
ICAgIGlmICghcC5pc1ZhbGlkKCkpCkBAIC0xMTkwLDcgKzExOTAsNyBAQCBib29sIFJlbmRlclRo
ZW1lUXQ6OnBhaW50TWVkaWFWb2x1bWVTbGlkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
Citib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAg
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IGdldE1lZGlhRWxlbWVudEZyb21SZW5k
ZXJPYmplY3Qobyk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCkBAIC0xMjI3LDcgKzEyMjcsNyBA
QCBib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUaHVt
YihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQogewogICAgIFN0eWxlUGFpbnRlciBwKHRoaXMsIHBhaW50SW5mbyk7CiAgICAgaWYg
KCFwLmlzVmFsaWQoKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCShyZXZp
c2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MCw1MCArOTAsNTAgQEAgcHVibGljOgogICAgIFFTdHlsZSogcVN0eWxl
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcik7CiAgICAgdmlydHVhbCB2
b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCBi
b29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcik7CisgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8o
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJ1dHRvblNp
emUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCi0gICAg
dmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcik7CisgICAgdmlydHVhbCBib29s
IHBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHIpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICNpZiBFTkFC
TEUoUFJPR1JFU1NfVEFHKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xp
ZGVyVHJhY2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50Kikg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1i
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owog
Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBi
b29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRE
ZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCiAg
ICAgLy8gUmV0dXJucyB0aGUgcmVwZWF0IGludGVydmFsIG9mIHRoZSBhbmltYXRpb24gZm9yIHRo
ZSBwcm9ncmVzcyBiYXIuCkBAIC0xNDMsMTYgKzE0MywxNiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3Jl
ZW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRp
YVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ3VycmVudFRp
bWUoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhS
ZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRl
ck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vl
a0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9v
bCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ3VycmVudFRpbWUo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1l
ZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNDdXJy
ZW50VGltZShmbG9hdCBjdXJyZW50VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0OwogICAgIHZp
cnR1YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJl
bnRUaW1lLCBmbG9hdCBkdXJhdGlvbikgY29uc3Q7CiBwcml2YXRlOgpAQCAtMTkwLDcgKzE5MCw3
IEBAIHByaXZhdGU6CiAKIGNsYXNzIFN0eWxlUGFpbnRlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgU3R5bGVQYWludGVyKFJlbmRlclRoZW1lUXQqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYpOworICAgIGV4cGxpY2l0IFN0eWxlUGFpbnRlcihSZW5kZXJUaGVtZVF0KiwgY29uc3Qg
UGFpbnRJbmZvJik7CiAgICAgZXhwbGljaXQgU3R5bGVQYWludGVyKFNjcm9sbGJhclRoZW1lUXQq
LCBHcmFwaGljc0NvbnRleHQqKTsKICAgICB+U3R5bGVQYWludGVyKCk7CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vd3gvUmVuZGVyVGhlbWVXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS93eC9SZW5kZXJUaGVtZVd4LmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3d4L1JlbmRlclRoZW1lV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxNCAr
NTUsMTQgQEAgcHVibGljOgogICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBj
b250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
KQorICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBh
aW50QnV0dG9uKG8sIGksIHIpOwogICAgIH0KICAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2ti
b3hTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRp
byhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25z
dCBJbnRSZWN0JiByKQorICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHBhaW50QnV0dG9uKG8sIGksIHIpOwogICAgIH0KQEAgLTcyLDE4ICs3MiwxOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9i
amVjdCosIEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRG
aWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBpbnQg
bWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9i
amVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlz
dEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5
bGVkKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgQm9yZGVyRGF0YSYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXImLCBjb25zdCBDb2xvciYpIGNvbnN0
OwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXeDo6YWRqdXN0QnV0dG9uU3R5
bGUoQ1MKICAgICBhZGRJbnRyaW5zaWNNYXJnaW5zKHN0eWxlKTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZVd4OjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVd4OjpwYWlu
dEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcikKIHsKICAgICB3eFdpbmRvdyogd2luZG93ID0gbmF0aXZlV2luZG93Rm9yUmVuZGVyT2Jq
ZWN0KG8pOwogICAgIHd4REMqIGRjID0gc3RhdGljX2Nhc3Q8d3hEQyo+KGkuY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCkpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXeDo6
YWRqdXN0VGV4dEZpZWxkU3R5bGUKICAgICAKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVd4OjpwYWlu
dFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVd4OjpwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikK
IHsKICAgICB3eFdpbmRvdyogd2luZG93ID0gbmF0aXZlV2luZG93Rm9yUmVuZGVyT2JqZWN0KG8p
OwogICAgIHd4REMqIGRjID0gc3RhdGljX2Nhc3Q8d3hEQyo+KGkuY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCkpOwpAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXeDo6YWRqdXN0
TWVudUxpc3RTdHlsZSgKIHsKIH0KICAgICAKLWJvb2wgUmVuZGVyVGhlbWVXeDo6cGFpbnRNZW51
TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVd4OjpwYWludE1lbnVMaXN0KFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAg
IHd4V2luZG93KiB3aW5kb3cgPSBuYXRpdmVXaW5kb3dGb3JSZW5kZXJPYmplY3Qobyk7CiAgICAg
d3hEQyogZGMgPSBzdGF0aWNfY2FzdDx3eERDKj4oaS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSk7CkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVd4OjphZGp1c3RNZW51TGlz
dEJ1dHRvbgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAgICAgCi1ib29sIFJlbmRlclRoZW1l
V3g6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXeDo6
cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcikKIHsKICAgICB3eFdpbmRvdyogd2luZG93ID0gbmF0aXZlV2luZG93
Rm9yUmVuZGVyT2JqZWN0KG8pOwogICAgIHd4REMqIGRjID0gc3RhdGljX2Nhc3Q8d3hEQyo+KGku
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvRWxs
aXBzaXNCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIEVsbGlwc2lzQm94OjpwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFp
bnRJbmZvLCBpbnQgdHgsIGludCB0eSkKK3ZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dDsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3Jl
bmRlcmVyLT5zdHlsZShtX2ZpcnN0TGluZSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9FbGxp
cHNpc0JveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgJ
KHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkp
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKICAgICB2b2lkIHNl
dFNlbGVjdGlvblN0YXRlKFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgcykgeyBtX3NlbGVj
dGlvblN0YXRlID0gczsgfQogICAgIEludFJlY3Qgc2VsZWN0aW9uUmVjdChpbnQgdHgsIGludCB0
eSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDE2ICsx
NTksMTYgQEAgdm9pZCBJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKGludCBkeCwgaQogICAgIH0K
IH0KIAotdm9pZCBJbmxpbmVCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWlu
dEluZm8sIGludCB0eCwgaW50IHR5KQordm9pZCBJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCktPnNob3Vs
ZFBhaW50V2l0aGluUm9vdChwYWludEluZm8pIHx8IChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24p
KQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8
fCAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
UGFpbnQgYWxsIHBoYXNlcyBvZiByZXBsYWNlZCBlbGVtZW50cyBhdG9taWNhbGx5LCBhcyB0aG91
Z2ggdGhlIHJlcGxhY2VkIGVsZW1lbnQgZXN0YWJsaXNoZWQgaXRzCiAgICAgLy8gb3duIHN0YWNr
aW5nIGNvbnRleHQuICAoU2VlIEFwcGVuZGl4IEUuMiwgc2VjdGlvbiA2LjQgb24gaW5saW5lIGJs
b2NrL3RhYmxlIGVsZW1lbnRzIGluIHRoZSBDU1MyLjEKICAgICAvLyBzcGVjaWZpY2F0aW9uLikK
ICAgICBib29sIHByZXNlcnZlUGhhc2UgPSBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNl
bGVjdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVRleHRDbGlwOwotICAgIFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8ocGFpbnRJbmZvKTsKKyAgICBQYWludEluZm8gaW5m
byhwYWludEluZm8pOwogICAgIGluZm8ucGhhc2UgPSBwcmVzZXJ2ZVBoYXNlID8gcGFpbnRJbmZv
LnBoYXNlIDogUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZDsKICAgICByZW5kZXJlcigpLT5wYWlu
dChpbmZvLCB0eCwgdHkpOwogICAgIGlmICghcHJlc2VydmVQaGFzZSkgewpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRpb24oaW50IGR4LCBpbnQgZHkpOwogCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CiAgICAg
dmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHkpOwogCiAgICAgLy8gT3ZlcmxvYWRl
ZCBuZXcgb3BlcmF0b3IuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2
aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMyLDcgKzYzMiw3IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0
UG9pbnQoY29uc3QgSGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQg
dHkpCit2b2lkIElubGluZUZsb3dCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQg
dHgsIGludCB0eSkKIHsKICAgICBJbnRSZWN0IG92ZXJmbG93UmVjdCh2aXNpYmxlT3ZlcmZsb3dS
ZWN0KCkpOwogICAgIG92ZXJmbG93UmVjdC5pbmZsYXRlKHJlbmRlcmVyKCktPm1heGltYWxPdXRs
aW5lU2l6ZShwYWludEluZm8ucGhhc2UpKTsKQEAgLTY3MSw5ICs2NzEsOSBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6CiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
aW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQ2hpbGRP
dXRsaW5lcyA/IFBhaW50UGhhc2VPdXRsaW5lIDogcGFpbnRJbmZvLnBoYXNlOwotICAgIFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvIGNoaWxkSW5mbyhwYWludEluZm8pOworICAgIFBhaW50SW5mbyBj
aGlsZEluZm8ocGFpbnRJbmZvKTsKICAgICBjaGlsZEluZm8ucGhhc2UgPSBwYWludFBoYXNlOwot
ICAgIGNoaWxkSW5mby5wYWludGluZ1Jvb3QgPSByZW5kZXJlcigpLT5wYWludGluZ1Jvb3RGb3JD
aGlsZHJlbihwYWludEluZm8pOworICAgIGNoaWxkSW5mby51cGRhdGVQYWludGluZ1Jvb3RGb3JD
aGlsZHJlbihyZW5kZXJlcigpKTsKICAgICAKICAgICAvLyAzLiBQYWludCBvdXIgY2hpbGRyZW4u
CiAgICAgaWYgKHBhaW50UGhhc2UgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSB7CkBAIC02ODgs
NyArNjg4LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogICAg
ICAgICBwYWludFRleHREZWNvcmF0aW9ucyhwYWludEluZm8sIHR4LCB0eSwgdHJ1ZSk7CiB9CiAK
LXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZp
bGxMYXllciwgaW50IF90eCwgaW50IF90eSwgaW50IHcsIGludCBoLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIs
IGludCBfdHgsIGludCBfdHksIGludCB3LCBpbnQgaCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7
CiAgICAgaWYgKCFmaWxsTGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTY5Niw3ICs2OTYsNyBA
QCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVycyhjb25zCiAgICAgcGFpbnRGaWxs
TGF5ZXIocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIF90eCwgX3R5LCB3LCBoLCBvcCk7CiB9CiAK
LXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmls
bExheWVyLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgaW50
IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAg
U3R5bGVJbWFnZSogaW1nID0gZmlsbExheWVyLT5pbWFnZSgpOwogICAgIGJvb2wgaGFzRmlsbElt
YWdlID0gaW1nICYmIGltZy0+Y2FuUmVuZGVyKHJlbmRlcmVyKCktPnN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSk7CkBAIC03MzYsOSArNzM2LDkgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJv
eFNoYWRvdyhHcmFwaAogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERl
Y29yYXRpb25zKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCktPnNob3Vs
ZFBhaW50V2l0aGluUm9vdChwYWludEluZm8pIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZCkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIo
KSkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpbnQgeCA9IG1feDsKQEAgLTgxMiw5ICs4MTIsOSBAQCB2b2lkIElubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMoCiAgICAgfQogfQogCi12b2lkIElubGluZUZsb3dCb3g6OnBh
aW50TWFzayhSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0
eSkKK3ZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQgdHgsIGludCB0eSkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCktPnNob3VsZFBhaW50V2l0aGlu
Um9vdChwYWludEluZm8pIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKKyAgICBpZiAoIXBh
aW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgcmVuZGVyZXIoKS0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VNYXNrKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgeCA9IG1feDsKQEAgLTkw
NCwxMSArOTA0LDExIEBAIHN0YXRpYyBib29sIHNob3VsZERyYXdUZXh0RGVjb3JhdGlvbihSZW4K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVj
b3JhdGlvbnMoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQg
dHksIGJvb2wgcGFpbnRlZENoaWxkcmVuKQordm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHRE
ZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHksIGJvb2wgcGFp
bnRlZENoaWxkcmVuKQogewogICAgIC8vIFBhaW50IHRleHQgZGVjb3JhdGlvbnMgbGlrZSB1bmRl
cmxpbmVzL292ZXJsaW5lcy4gV2Ugb25seSBkbyB0aGlzIGlmIHdlIGFyZW4ndCBpbiBxdWlya3Mg
bW9kZSAoaS5lLiwgaW4KICAgICAvLyBhbG1vc3Qtc3RyaWN0IG1vZGUgb3Igc3RyaWN0IG1vZGUp
LgotICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5odG1sSGFja3MoKSB8fCAhcmVuZGVyZXIo
KS0+c2hvdWxkUGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykgfHwKKyAgICBpZiAocmVuZGVyZXIo
KS0+c3R5bGUoKS0+aHRtbEhhY2tzKCkgfHwgIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJv
b3QocmVuZGVyZXIoKSkgfHwKICAgICAgICAgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSwxMyArOTEsMTMgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVHJ1bmNhdGlvbigpOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50Qm94RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBpbnQgdHgsIGlu
dCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYsIGludCB0eCwgaW50IHR5KTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50
IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKLSAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgsIGludCB0
eSwgaW50IHcsIGludCBoLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGludCB0
eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGludCB0
eCwgaW50IHR5KTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50
IGgsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgdm9pZCBw
YWludEZpbGxMYXllcihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxM
YXllciosIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqLCBSZW5kZXJTdHlsZSosIFNoYWRvd1N0eWxlLCBpbnQgdHgsIGludCB0eSwgaW50IHcs
IGludCBoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0RGVjb3JhdGlvbnMoUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgYm9vbCBwYWludGVkQ2hpbGRyZW4gPSBm
YWxzZSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
aW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHREZWNvcmF0aW9ucyhQ
YWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgYm9vbCBwYWludGVkQ2hpbGRyZW4gPSBmYWxzZSk7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSk7CiAKICAgICB2aXJ0dWFsIFJl
bmRlckxpbmVCb3hMaXN0KiByZW5kZXJlckxpbmVCb3hlcygpIGNvbnN0OwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw5ICszNTUsOSBA
QCBzdGF0aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljCiAgICAgfSB3aGlsZSAo
c2hhZG93IHx8IHN0cm9rZWQgfHwgIW9wYXF1ZSk7CiB9CiAKLXZvaWQgSW5saW5lVGV4dEJveDo6
cGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkp
Cit2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgs
IGludCB0eSkKIHsKLSAgICBpZiAoaXNMaW5lQnJlYWsoKSB8fCAhcmVuZGVyZXIoKS0+c2hvdWxk
UGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUgfHwKKyAgICBpZiAoaXNMaW5lQnJlYWsoKSB8fCAhcGFpbnRJbmZv
LnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fAogICAgICAgICBtX3RydW5jYXRpb24gPT0gY0Z1
bGxUcnVuY2F0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSkKICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCShyZXZpc2lv
biA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBj
b3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGlv
blN0YXJ0RW5kKGludCYgc1BvcywgaW50JiBlUG9zKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogICAg
IHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5KTsKIAogcHVibGljOgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9QYWlu
dEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAw
MCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAw
MCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNCBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFBhaW50SW5mb19oCisjZGVmaW5lIFBhaW50SW5m
b19oCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2Vu
ZGlmCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiUGFpbnRQaGFzZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
T3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50OworY2xhc3MgUmVuZGVySW5saW5lOworY2xhc3MgUmVu
ZGVyT2JqZWN0OworCit0eXBlZGVmIEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Kiwg
SW50UmVjdD4gT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOworCisvKgorICogUGFpbnQgdGhlIG9iamVj
dCBhbmQgaXRzIGNoaWxkcmVuLCBjbGlwcGVkIGJ5ICh4fHl8d3xoKS4KKyAqICh0eHx0eSkgaXMg
dGhlIGNhbGN1bGF0ZWQgcG9zaXRpb24gb2YgdGhlIHBhcmVudAorICovCitzdHJ1Y3QgUGFpbnRJ
bmZvIHsKKyAgICBQYWludEluZm8oR3JhcGhpY3NDb250ZXh0KiBuZXdDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBuZXdSZWN0LCBQYWludFBoYXNlIG5ld1BoYXNlLCBib29sIG5ld0ZvcmNlQmxhY2tU
ZXh0LAorICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1BhaW50aW5nUm9vdCwgTGlzdEhh
c2hTZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzLAorICAgICAgICAgICAgICBP
dmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMgPSAwKQorICAgICAgICA6
IGNvbnRleHQobmV3Q29udGV4dCkKKyAgICAgICAgLCByZWN0KG5ld1JlY3QpCisgICAgICAgICwg
cGhhc2UobmV3UGhhc2UpCisgICAgICAgICwgZm9yY2VCbGFja1RleHQobmV3Rm9yY2VCbGFja1Rl
eHQpCisgICAgICAgICwgcGFpbnRpbmdSb290KG5ld1BhaW50aW5nUm9vdCkKKyAgICAgICAgLCBv
dXRsaW5lT2JqZWN0cyhuZXdPdXRsaW5lT2JqZWN0cykKKyAgICAgICAgLCBvdmVybGFwVGVzdFJl
cXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCisgICAgeworICAgIH0KKworICAgIHZvaWQgdXBk
YXRlUGFpbnRpbmdSb290Rm9yQ2hpbGRyZW4oY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
KyAgICB7CisgICAgICAgIGlmICghcGFpbnRpbmdSb290KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIC8vIElmIHdlJ3JlIHRoZSBwYWludGluZyByb290LCBraWRzIGRyYXcgbm9ybWFs
bHksIGFuZCBzZWUgcm9vdCBvZiAwLgorICAgICAgICBpZiAocGFpbnRpbmdSb290ID09IHJlbmRl
cmVyKSB7CisgICAgICAgICAgICBwYWludGluZ1Jvb3QgPSAwOyAKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgc2hvdWxkUGFpbnRXaXRoaW5Sb290KGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
IXBhaW50aW5nUm9vdCB8fCBwYWludGluZ1Jvb3QgPT0gcmVuZGVyZXI7CisgICAgfQorCisjaWYg
RU5BQkxFKFNWRykKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKQorICAgIHsKKyAgICAgICAgaWYgKGxvY2FsVG9B
bmNlc3RvclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybSk7CisgICAg
ICAgIHJlY3QgPSBsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocmVj
dCk7CisgICAgfQorI2VuZGlmCisKKyAgICAvLyBGSVhNRTogSW50cm9kdWNlIHNldHRlcnMvZ2V0
dGVycyBhdCBzb21lIHBvaW50LiBSZXF1aXJlcyBhIGxvdCBvZiBjaGFuZ2VzIHRocm91Z2hvdXQg
cmVuZGVyaW5nLy4KKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQ7CisgICAgSW50UmVjdCBy
ZWN0OworICAgIFBhaW50UGhhc2UgcGhhc2U7CisgICAgYm9vbCBmb3JjZUJsYWNrVGV4dDsKKyAg
ICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdDsgLy8gdXNlZCB0byBkcmF3IGp1c3Qgb25lIGVs
ZW1lbnQgYW5kIGl0cyB2aXN1YWwga2lkcworICAgIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+
KiBvdXRsaW5lT2JqZWN0czsgLy8gdXNlZCB0byBsaXN0IG91dGxpbmVzIHRoYXQgc2hvdWxkIGJl
IHBhaW50ZWQgYnkgYSBibG9jayB3aXRoIGlubGluZSBjaGlsZHJlbgorICAgIE92ZXJsYXBUZXN0
UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFBhaW50SW5mb19oCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Q
YWludFBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRQaGFzZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8g
KGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyICht
dWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmbmRlZiBQYWludFBoYXNlX2gKKyNkZWZpbmUgUGFpbnRQaGFzZV9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLyoKKyAqICBUaGUgcGFpbnRpbmcgb2YgYSBsYXllciBvY2N1cnMgaW4g
dGhyZWUgZGlzdGluY3QgcGhhc2VzLiAgRWFjaCBwaGFzZSBpbnZvbHZlcworICogIGEgcmVjdXJz
aXZlIGRlc2NlbnQgaW50byB0aGUgbGF5ZXIncyByZW5kZXIgb2JqZWN0cy4gVGhlIGZpcnN0IHBo
YXNlIGlzIHRoZSBiYWNrZ3JvdW5kIHBoYXNlLgorICogIFRoZSBiYWNrZ3JvdW5kcyBhbmQgYm9y
ZGVycyBvZiBhbGwgYmxvY2tzIGFyZSBwYWludGVkLiAgSW5saW5lcyBhcmUgbm90IHBhaW50ZWQg
YXQgYWxsLgorICogIEZsb2F0cyBtdXN0IHBhaW50IGFib3ZlIGJsb2NrIGJhY2tncm91bmRzIGJ1
dCBlbnRpcmVseSBiZWxvdyBpbmxpbmUgY29udGVudCB0aGF0IGNhbiBvdmVybGFwIHRoZW0uCisg
KiAgSW4gdGhlIGZvcmVncm91bmQgcGhhc2UsIGFsbCBpbmxpbmVzIGFyZSBmdWxseSBwYWludGVk
LiAgSW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzIHdpbGwgZ2V0IGFsbAorICogIHRocmVlIHBoYXNl
cyBpbnZva2VkIG9uIHRoZW0gZHVyaW5nIHRoaXMgcGhhc2UuCisgKi8KKworZW51bSBQYWludFBo
YXNlIHsKKyAgICBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kLAorICAgIFBhaW50UGhhc2VDaGls
ZEJsb2NrQmFja2dyb3VuZCwKKyAgICBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzLAor
ICAgIFBhaW50UGhhc2VGbG9hdCwKKyAgICBQYWludFBoYXNlRm9yZWdyb3VuZCwKKyAgICBQYWlu
dFBoYXNlT3V0bGluZSwKKyAgICBQYWludFBoYXNlQ2hpbGRPdXRsaW5lcywKKyAgICBQYWludFBo
YXNlU2VsZk91dGxpbmUsCisgICAgUGFpbnRQaGFzZVNlbGVjdGlvbiwKKyAgICBQYWludFBoYXNl
Q29sbGFwc2VkVGFibGVCb3JkZXJzLAorICAgIFBhaW50UGhhc2VUZXh0Q2xpcCwKKyAgICBQYWlu
dFBoYXNlTWFzaworfTsKKworZW51bSBQYWludEJlaGF2aW9yRmxhZ3MgeworICAgIFBhaW50QmVo
YXZpb3JOb3JtYWwgPSAwLAorICAgIFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5ID0gMSA8PCAw
LAorICAgIFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA9IDEgPDwgMSwKKyAgICBQYWludEJl
aGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzID0gMSA8PCAyCit9OworCit0eXBlZGVmIHVu
c2lnbmVkIFBhaW50QmVoYXZpb3I7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFBhaW50UGhhc2VfaApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNp
b24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5ODQsNyArMTk4NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnQKICAgICAvLyBPdXIgc2Nyb2xsYmFyIHdpZGdldHMgcGFpbnQgZXhhY3RseSB3
aGVuIHdlIHRlbGwgdGhlbSB0bywgc28gdGhhdCB0aGV5IHdvcmsgcHJvcGVybHkgd2l0aAogICAg
IC8vIHotaW5kZXguICBXZSBwYWludCBhZnRlciB3ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2Jv
cmRlciwgc28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3aWxsCiAgICAgLy8gc2l0IGFib3ZlIHRoZSBi
YWNrZ3JvdW5kL2JvcmRlci4KLSAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgc3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgKHBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tn
cm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBzaG91
bGRQYWludFdpdGhpblJvb3QocGFpbnRJbmZvKSkKKyAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkg
JiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgKHBoYXNlID09IFBhaW50UGhh
c2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3Jv
dW5kKSAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICBs
YXllcigpLT5wYWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwg
cGFpbnRJbmZvLnJlY3QpOwogfQogCkBAIC0yMDk5LDcgKzIwOTksNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjpwYWludENoaWxkcmVuKFBhaW50SW5mCiAgICAgLy8gV2UgZG9uJ3QgcGFpbnQgb3VyIG93
biBiYWNrZ3JvdW5kLCBidXQgd2UgZG8gbGV0IHRoZSBraWRzIHBhaW50IHRoZWlyIGJhY2tncm91
bmRzLgogICAgIFBhaW50SW5mbyBpbmZvKHBhaW50SW5mbyk7CiAgICAgaW5mby5waGFzZSA9IG5l
d1BoYXNlOwotICAgIGluZm8ucGFpbnRpbmdSb290ID0gcGFpbnRpbmdSb290Rm9yQ2hpbGRyZW4o
cGFpbnRJbmZvKTsKKyAgICBpbmZvLnVwZGF0ZVBhaW50aW5nUm9vdEZvckNoaWxkcmVuKHRoaXMp
OwogICAgIGJvb2wgY2hlY2tQYWdlQnJlYWtzID0gZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSAmJiAh
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+cGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKCk7CiAg
ICAgYm9vbCBjaGVja0NvbHVtbkJyZWFrcyA9ICFjaGVja1BhZ2VCcmVha3MgJiYgIXZpZXcoKS0+
cHJpbnRSZWN0KCkuaXNFbXB0eSgpICYmICFkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5wYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQoKTsKIApAQCAtMjI2Niw3ICsyMjY2LDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6cGFpbnRGbG9hdHMoUGFpbnRJbmZvJgogCiB2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dEVsbGlwc2lzQm94ZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogewot
ICAgIGlmICghc2hvdWxkUGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykgfHwgIWZpcnN0TGluZUJv
eCgpKQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCh0aGlzKSB8fCAh
Zmlyc3RMaW5lQm94KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzdHlsZSgpLT52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQpIHsKQEAgLTI0MjksNyArMjQyOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50U2Vs
ZWN0aW9uKFBhaW50SW4KIH0KIAogI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgotc3RhdGljIHZv
aWQgY2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
KiBwYWludEluZm8sIGludCB0eCwgaW50IHR5LCBSZW5kZXJCbG9jazo6UG9zaXRpb25lZE9iamVj
dHNMaXN0SGFzaFNldCogcG9zaXRpb25lZE9iamVjdHMpCitzdGF0aWMgdm9pZCBjbGlwT3V0UG9z
aXRpb25lZE9iamVjdHMoY29uc3QgUGFpbnRJbmZvKiBwYWludEluZm8sIGludCB0eCwgaW50IHR5
LCBSZW5kZXJCbG9jazo6UG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCogcG9zaXRpb25lZE9i
amVjdHMpCiB7CiAgICAgaWYgKCFwb3NpdGlvbmVkT2JqZWN0cykKICAgICAgICAgcmV0dXJuOwpA
QCAtNDIyMyw3ICs0MjIzLDcgQEAgaW50IFJlbmRlckJsb2NrOjpsYXlvdXRDb2x1bW5zKGludCBl
bmRPZgogICAgICAgICB2LT5zZXRQcmludFJlY3QocGFnZVJlY3QpOwogICAgICAgICB2LT5zZXRU
cnVuY2F0ZWRBdCh0cnVuY2F0aW9uUG9pbnQpOwogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dCgoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKTApOwotICAgICAgICBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyBwYWludEluZm8oJmNvbnRleHQsIHBhZ2VSZWN0LCBQYWludFBoYXNlRm9yZWdy
b3VuZCwgZmFsc2UsIDAsIDApOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKCZjb250ZXh0
LCBwYWdlUmVjdCwgUGFpbnRQaGFzZUZvcmVncm91bmQsIGZhbHNlLCAwLCAwKTsKICAgICAgICAg
CiAgICAgICAgIHNldEhhc0NvbHVtbnMoZmFsc2UpOwogICAgICAgICBwYWludE9iamVjdChwYWlu
dEluZm8sIDAsIDApOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA2MjA5
OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2OSw3ICs1NjksNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
CiAKICAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLiBKdXN0IHBhc3MgcGFpbnQgdGhyb3Vn
aCB0byB0aGUgY2hpbGRyZW4KICAgICBQYWludEluZm8gY2hpbGRJbmZvKHBhaW50SW5mbyk7Ci0g
ICAgY2hpbGRJbmZvLnBhaW50aW5nUm9vdCA9IHBhaW50aW5nUm9vdEZvckNoaWxkcmVuKHBhaW50
SW5mbyk7CisgICAgY2hpbGRJbmZvLnVwZGF0ZVBhaW50aW5nUm9vdEZvckNoaWxkcmVuKHRoaXMp
OwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5wYWludChjaGlsZElu
Zm8sIHR4LCB0eSk7CiB9CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50
Um9vdEJveERlY29yYXRpb25zKAogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7Ci0gICAgaWYgKCFzaG91
bGRQYWludFdpdGhpblJvb3QocGFpbnRJbmZvKSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQ
YWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc1Jvb3Qo
KSkgewpAQCAtNjYzLDcgKzY2Myw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRp
b25zV2l0aFMKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5m
bywgaW50IHR4LCBpbnQgdHkpCiB7Ci0gICAgaWYgKCFzaG91bGRQYWludFdpdGhpblJvb3QocGFp
bnRJbmZvKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZU1hc2spCisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRX
aXRoaW5Sb290KHRoaXMpIHx8IHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aW50IHcgPSB3aWR0aCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAko
cmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBSZW5kZXJCb3gqIFJlbmRlckZpZWxk
c2V0OjpmaW5kTGVnZW5kKCkgCiAKIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogewotICAgIGlmICgh
c2hvdWxkUGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykpCisgICAgaWYgKCFwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgdyA9
IHdpZHRoKCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNw
cAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNyBAQCB2b2lkIFJlbmRlckZvcmVp
Z25PYmplY3Q6OnBhaW50KFBhaW50SW5mCiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8o
cGFpbnRJbmZvKTsKICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0KLSAgICBh
cHBseVRyYW5zZm9ybVRvUGFpbnRJbmZvKGNoaWxkUGFpbnRJbmZvLCBsb2NhbFRyYW5zZm9ybSgp
KTsKKyAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9ybShsb2NhbFRyYW5zZm9ybSgpKTsK
IAogICAgIGlmIChTVkdSZW5kZXJCYXNlOjppc092ZXJmbG93SGlkZGVuKHRoaXMpKQogICAgICAg
ICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNDcsMTAgKzIyNDcsMTAgQEAg
Ym9vbCBSZW5kZXJMYXllcjo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbgogCiB2b2lkIFJlbmRlckxh
eWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0ICpwYWludGluZ1Jvb3Qp
CiB7Ci0gICAgUmVuZGVyT2JqZWN0OjpPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RS
ZXF1ZXN0czsKKyAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsK
ICAgICBwYWludExheWVyKHRoaXMsIHAsIGRhbWFnZVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50
aW5nUm9vdCwgJm92ZXJsYXBUZXN0UmVxdWVzdHMpOwotICAgIFJlbmRlck9iamVjdDo6T3Zlcmxh
cFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVzdFJlcXVlc3RzLmVuZCgp
OwotICAgIGZvciAoUmVuZGVyT2JqZWN0OjpPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9y
IGl0ID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAg
T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVzdFJlcXVlc3Rz
LmVuZCgpOworICAgIGZvciAoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBpdCA9IG92
ZXJsYXBUZXN0UmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBpdC0+
Zmlyc3QtPnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKIH0KIApAQCAtMjI2OSwxMSArMjI2
OSwxMSBAQCBzdGF0aWMgdm9pZCByZXN0b3JlQ2xpcChHcmFwaGljc0NvbnRleHQqCiAgICAgcC0+
cmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9pZCBwZXJmb3JtT3ZlcmxhcFRlc3RzKFJlbmRlck9i
amVjdDo6T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwJiBvdmVybGFwVGVzdFJlcXVlc3RzLCBjb25zdCBJ
bnRSZWN0JiBsYXllckJvdW5kcykKK3N0YXRpYyB2b2lkIHBlcmZvcm1PdmVybGFwVGVzdHMoT3Zl
cmxhcFRlc3RSZXF1ZXN0TWFwJiBvdmVybGFwVGVzdFJlcXVlc3RzLCBjb25zdCBJbnRSZWN0JiBs
YXllckJvdW5kcykKIHsKICAgICBWZWN0b3I8T3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Kj4gb3Zl
cmxhcHBlZFJlcXVlc3RDbGllbnRzOwotICAgIFJlbmRlck9iamVjdDo6T3ZlcmxhcFRlc3RSZXF1
ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVybGFwVGVzdFJlcXVlc3RzLmVuZCgpOwotICAgIGZv
ciAoUmVuZGVyT2JqZWN0OjpPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gb3Zl
cmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBPdmVybGFw
VGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGVuZCA9IG92ZXJsYXBUZXN0UmVxdWVzdHMuZW5kKCk7
CisgICAgZm9yIChPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gb3ZlcmxhcFRl
c3RSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCFsYXll
ckJvdW5kcy5pbnRlcnNlY3RzKGl0LT5zZWNvbmQpKQogICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTIyOTMsNyArMjI5Myw3IEBAIHN0YXRpYyBib29sIHNob3VsZERvU29mdHdhcmVQYWludChj
b25zdCAKIAogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlck9i
amVjdDo6T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJsYXBUZXN0
UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAg
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKQEAgLTI0MTUsNyArMjQxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXIoUmVuZGVyTGF5ZXIKICAgICAgICAgc2V0Q2xpcChwLCBwYWludERpcnR5UmVjdCwgZGFtYWdl
UmVjdCk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQuCi0gICAgICAgIFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvIHBhaW50SW5mbyhwLCBkYW1hZ2VSZWN0LCBQYWludFBoYXNlQmxv
Y2tCYWNrZ3JvdW5kLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIDApOworICAgICAg
ICBQYWludEluZm8gcGFpbnRJbmZvKHAsIGRhbWFnZVJlY3QsIFBhaW50UGhhc2VCbG9ja0JhY2tn
cm91bmQsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7CiAgICAgICAgIHJlbmRl
cmVyKCktPnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKIAogICAgICAgICAvLyBSZXN0b3JlIHRo
ZSBjbGlwLgpAQCAtMjQzMyw3ICsyNDMzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
cihSZW5kZXJMYXllcgogCiAgICAgICAgIC8vIFNldCB1cCB0aGUgY2xpcCB1c2VkIHdoZW4gcGFp
bnRpbmcgb3VyIGNoaWxkcmVuLgogICAgICAgICBzZXRDbGlwKHAsIHBhaW50RGlydHlSZWN0LCBj
bGlwUmVjdFRvQXBwbHkpOwotICAgICAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBwYWludElu
Zm8ocCwgY2xpcFJlY3RUb0FwcGx5LCAKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhwLCBj
bGlwUmVjdFRvQXBwbHksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0aW9uT25seSA/IFBhaW50UGhhc2VTZWxlY3Rpb24gOiBQYWludFBoYXNlQ2hpbGRC
bG9ja0JhY2tncm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yY2VCbGFja1RleHQsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCAwKTsKICAgICAgICAg
cmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCB0eCwgdHkpOwpAQCAtMjQ1Myw3ICsyNDUzLDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllcgogICAgIAogICAgIGlm
ICghb3V0bGluZVJlY3QuaXNFbXB0eSgpICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAg
ICAgICAvLyBQYWludCBvdXIgb3duIG91dGxpbmUKLSAgICAgICAgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8gcGFpbnRJbmZvKHAsIG91dGxpbmVSZWN0LCBQYWludFBoYXNlU2VsZk91dGxpbmUsIGZh
bHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7CisgICAgICAgIFBhaW50SW5mbyBwYWlu
dEluZm8ocCwgb3V0bGluZVJlY3QsIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgZmFsc2UsIHBhaW50
aW5nUm9vdEZvclJlbmRlcmVyLCAwKTsKICAgICAgICAgc2V0Q2xpcChwLCBwYWludERpcnR5UmVj
dCwgb3V0bGluZVJlY3QpOwogICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHR4
LCB0eSk7CiAgICAgICAgIHJlc3RvcmVDbGlwKHAsIHBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVj
dCk7CkBAIC0yNDY5LDcgKzI0NjksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJl
bmRlckxheWVyCiAgICAgICAgIHNldENsaXAocCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3Qp
OwogCiAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrLgotICAgICAgICBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyBwYWludEluZm8ocCwgZGFtYWdlUmVjdCwgUGFpbnRQaGFzZU1hc2ssIGZhbHNlLCBw
YWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7CisgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8o
cCwgZGFtYWdlUmVjdCwgUGFpbnRQaGFzZU1hc2ssIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5k
ZXJlciwgMCk7CiAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsK
ICAgICAgICAgCiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGNsaXAuCkBAIC0yNDg2LDcgKzI0ODYs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyCiAKIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWlu
dGluZ1Jvb3QsIFJlbmRlck9iamVjdDo6T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVz
dFJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFp
bnRpbmdSb290LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7
CiAgICAgaWYgKCFsaXN0KQpAQCAtMjUwMyw3ICsyNTAzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMaXN0KFZlY3RvcjxSZW5kZQogCiB2b2lkIFJlbmRlckxheWVyOjpwYWludFBhZ2luYXRl
ZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5
ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJl
aGF2aW9yIHBhaW50QmVoYXZpb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyT2JqZWN0OjpPdmVy
bGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwg
T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBkbyBtdWx0aXBsZSBwYXNzZXMsIGJyZWFraW5nIHVw
IG91ciBjaGlsZCBsYXllciBpbnRvIHN0cmlwcy4KQEAgLTI1MjQsNyArMjUyNCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50UGFnaW5hdGVkQ2hpbGRMYXkKIAogdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGly
dHlSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVu
ZGVyT2JqZWN0OjpPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IHBhaW50aW5nUm9vdCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3Rz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXll
ckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+JiBjb2x1bW5MYXll
cnMsIHNpemVfdCBjb2xJbmRleCkKIHsKICAgICBSZW5kZXJCbG9jayogY29sdW1uQmxvY2sgPSB0
b1JlbmRlckJsb2NrKGNvbHVtbkxheWVyc1tjb2xJbmRleF0tPnJlbmRlcmVyKCkpOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OSwxOSArNDc5LDE5IEBAIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBQYWludExheWVyRmxhZ3M7CiAKICAgICB2b2lk
IHBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsCi0gICAgICAgICAgICAgICAgICAgIFBhaW50QmVo
YXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJPYmplY3Q6Ok92ZXJsYXBU
ZXN0UmVxdWVzdE1hcCogPSAwLAorICAgICAgICAgICAgICAgICAgICBQYWludEJlaGF2aW9yLCBS
ZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiA9IDAsCiAg
ICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyA9IDApOwogICAgIHZvaWQgcGFpbnRM
aXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhp
Y3NDb250ZXh0KiBwLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGly
dHlSZWN0LCBQYWludEJlaGF2aW9yLAotICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
cGFpbnRpbmdSb290LCBSZW5kZXJPYmplY3Q6Ok92ZXJsYXBUZXN0UmVxdWVzdE1hcCosCisgICAg
ICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJsYXBUZXN0UmVx
dWVzdE1hcCosCiAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzKTsKICAgICB2b2lk
IHBhaW50UGFnaW5hdGVkQ2hpbGRMYXllcihSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlv
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50
aW5nUm9vdCwgUmVuZGVyT2JqZWN0OjpPdmVybGFwVGVzdFJlcXVlc3RNYXAqLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBPdmVy
bGFwVGVzdFJlcXVlc3RNYXAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
aW50TGF5ZXJGbGFncyk7CiAgICAgdm9pZCBwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5k
ZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250
ZXh0KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlck9iamVjdDo6T3Zl
cmxhcFRlc3RSZXF1ZXN0TWFwKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzLCBjb25zdCBW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiYgY29sdW1uTGF5ZXJzLCBzaXplX3QgY29sdW1uSW5kZXgpOwog
CiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBS
ZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcigKICAgICAgICAgLy8gRXN0YWJs
aXNoIHRoZSBjbGlwIHVzZWQgdG8gcGFpbnQgb3VyIGJhY2tncm91bmQuCiAgICAgICAgIHNldENs
aXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwogICAgICAgICAKLSAgICAg
ICAgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbyhjb250ZXh0LCBwYWludEJveCwgUGFpbnRQ
aGFzZUJsb2NrQmFja2dyb3VuZCwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCAwKTsK
KyAgICAgICAgUGFpbnRJbmZvIGluZm8oY29udGV4dCwgcGFpbnRCb3gsIFBhaW50UGhhc2VCbG9j
a0JhY2tncm91bmQsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7CiAgICAgICAg
IHJlbmRlcmVyKCktPnBhaW50KGluZm8sIHR4LCB0eSk7CiAKICAgICAgICAgLy8gT3VyIHNjcm9s
bGJhciB3aWRnZXRzIHBhaW50IGV4YWN0bHkgd2hlbiB3ZSB0ZWxsIHRoZW0gdG8sIHNvIHRoYXQg
dGhleSB3b3JrIHByb3Blcmx5IHdpdGgKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoCiAKICAgICAgICAgLy8gU2V0IHVwIHRoZSBjbGlw
IHVzZWQgd2hlbiBwYWludGluZyBvdXIgY2hpbGRyZW4uCiAgICAgICAgIHNldENsaXAoY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7Ci0gICAgICAgIFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBjbGlwUmVjdFRvQXBwbHksIAorICAgICAg
ICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGNsaXBSZWN0VG9BcHBseSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Pbmx5ID8gUGFpbnRQ
aGFzZVNlbGVjdGlvbiA6IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZUJsYWNrVGV4dCwgcGFpbnRp
bmdSb290Rm9yUmVuZGVyZXIsIDApOwogICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludElu
Zm8sIHR4LCB0eSk7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRJbnRvTGF5ZXIoCiAKICAgICAgICAgaWYgKCFvdXRsaW5lUmVjdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIFBhaW50IG91ciBvd24gb3V0bGluZQotICAgICAgICAgICAgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIG91dGxpbmVSZWN0LCBQYWlu
dFBoYXNlU2VsZk91dGxpbmUsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7Cisg
ICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIG91dGxpbmVSZWN0LCBQYWlu
dFBoYXNlU2VsZk91dGxpbmUsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7CiAg
ICAgICAgICAgICBzZXRDbGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCk7
CiAgICAgICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHR4LCB0eSk7CiAgICAg
ICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludERpcnR5UmVjdCwgb3V0bGluZVJlY3Qp
OwpAQCAtMTAyOCw3ICsxMDI4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50
b0xheWVyKAogICAgICAgICAgICAgc2V0Q2xpcChjb250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFt
YWdlUmVjdCk7CiAKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrLgotICAgICAgICAgICAg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGRhbWFnZVJlY3QsIFBh
aW50UGhhc2VNYXNrLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIDApOworICAgICAg
ICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBkYW1hZ2VSZWN0LCBQYWludFBoYXNl
TWFzaywgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCAwKTsKICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgLy8gUmVzdG9yZSB0aGUgY2xpcC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCb3hMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQm94TGlzdC5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJveExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5lQm94ZXMoKQogICAgICAgICBjdXJyLT5kaXJ0
eUxpbmVCb3hlcygpOwogfQogCi12b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVuZGVyZXIsIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5KSBjb25zdAordm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBQYWludEluZm8mIHBhaW50SW5mbywgaW50
IHR4LCBpbnQgdHkpIGNvbnN0CiB7CiAgICAgLy8gT25seSBwYWludCBkdXJpbmcgdGhlIGZvcmVn
cm91bmQvc2VsZWN0aW9uIHBoYXNlcy4KICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9u
ICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlT3V0bGluZSAKQEAgLTE3OCw3ICsxNzgs
NyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJCb3hNCiAgICAgaWYgKHlQ
b3MgPj0gcGFpbnRJbmZvLnJlY3QuYm90dG9tKCkgfHwgeVBvcyArIGggPD0gcGFpbnRJbmZvLnJl
Y3QueSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBp
bmZvKHBhaW50SW5mbyk7CisgICAgUGFpbnRJbmZvIGluZm8ocGFpbnRJbmZvKTsKICAgICBMaXN0
SGFzaFNldDxSZW5kZXJJbmxpbmUqPiBvdXRsaW5lT2JqZWN0czsKICAgICBpbmZvLm91dGxpbmVP
YmplY3RzID0gJm91dGxpbmVPYmplY3RzOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQm94TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0LmgJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJveExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXJ0eUxpbmVCb3hlcygpOwogICAgIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2Vk
Q2hpbGQoUmVuZGVyT2JqZWN0KiBwYXJlbnQsIFJlbmRlck9iamVjdCogY2hpbGQpOwogCi0gICAg
dm9pZCBwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCosIFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgaW50IHgsIGludCB5KSBjb25zdDsKKyAgICB2b2lkIHBhaW50KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiwgUGFpbnRJbmZvJiwgaW50IHgsIGludCB5KSBjb25zdDsKICAgICBib29sIGhpdFRlc3Qo
UmVuZGVyQm94TW9kZWxPYmplY3QqLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKSBjb25zdDsK
ICAgICAKIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xzLmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIFJlbmRl
ck1lZGlhQ29udHJvbHM6OmFkanVzdE1lZGlhU2xpCiAgICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0
KExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgKiB6b29tTGV2
ZWwpLCBGaXhlZCkpOwogfQogCi1ib29sIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFD
b250cm9sc1BhcnQoTWVkaWFDb250cm9sRWxlbWVudFR5cGUgcGFydCwgUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByKQorYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIHBhcnQsIFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRo
ZW1lTGlicmFyeSgpKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250
cm9scy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJv
bHMuaAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFJlbmRlck1lZGlhQ29udHJvbHMg
ewogcHVibGljOgotICAgIHN0YXRpYyBib29sIHBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFD
b250cm9sRWxlbWVudFR5cGUsIFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHN0YXRpYyBib29sIHBhaW50TWVkaWFDb250
cm9sc1BhcnQoTWVkaWFDb250cm9sRWxlbWVudFR5cGUsIFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICBzdGF0aWMgdm9pZCBhZGp1c3RNZWRpYVNs
aWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtLmNwcAkocmV2aXNpb24gNjIw
OTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBib29sIHBhaW50TWVkaWFC
dXR0b24oR3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcGFp
bnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgYm9v
bCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQob2JqZWN0KTsKICAgICBp
ZiAoIW1lZGlhRWxlbWVudCkKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRp
YU11dGVCdXR0b24oUmVuZGVyTwogICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5m
by5jb250ZXh0LCByZWN0LCBtZWRpYUVsZW1lbnQtPm11dGVkKCkgPyBzb3VuZE5vbmU6IHNvdW5k
RnVsbCk7CiB9CiAKLXN0YXRpYyBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVj
dCogb2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorc3RhdGljIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50
TWVkaWFFbGVtZW50KG9iamVjdCk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCkBAIC0xMDUsNyAr
MTA1LDcgQEAgc3RhdGljIEltYWdlKiBnZXRNZWRpYVNsaWRlclRodW1iKCkKICAgICByZXR1cm4g
bWVkaWFTbGlkZXJUaHVtYjsKIH0KIAotc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNsaWRlcihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyBib29sIHBhaW50TWVkaWFTbGlkZXIoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFy
ZW50TWVkaWFFbGVtZW50KG9iamVjdCk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCkBAIC0xNjQs
NyArMTY0LDcgQEAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYVNsaWRlcihSZW5kZXJPYmplYwogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1
bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghb2JqZWN0LT5wYXJlbnQoKS0+aXNTbGlkZXIo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBib29s
IHBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXIKICAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRv
bihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFTbGlkZXJUaHVtYik7CiB9CiAKLXN0YXRp
YyBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CitzdGF0aWMgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudChv
YmplY3QpOwogICAgIGlmICghbWVkaWFFbGVtZW50KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRp
YyBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXIoUmVuZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQorc3RhdGljIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIW9iamVjdC0+cGFyZW50KCktPmlzU2xpZGVyKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgYm9vbCBwYWlu
dE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoCiAgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhVm9sdW1lU2xpZGVyVGh1bWIpOwogfQogCi1zdGF0
aWMgYm9vbCBwYWludE1lZGlhVGltZWxpbmVDb250YWluZXIoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHJlY3QpCitzdGF0aWMgYm9vbCBwYWludE1lZGlhVGltZWxpbmVDb250YWluZXIoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVk
aWFFbGVtZW50KG9iamVjdCk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCkBAIC0yNjMsNyArMjYz
LDcgQEAgYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnNob3VsZAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnBhaW50TWVk
aWFDb250cm9sc1BhcnQoTWVkaWFDb250cm9sRWxlbWVudFR5cGUgcGFydCwgUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bTo6cGFpbnRN
ZWRpYUNvbnRyb2xzUGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBwYXJ0LCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBNZWRpYU11dGVCdXR0b246Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0u
aAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRy
b2xzQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwogY2xhc3MgUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KENvbnRyb2xQ
YXJ0LCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIGJvb2wgcGFpbnRNZWRpYUNvbnRyb2xzUGFydChN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSwgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgc3RhdGljIGJvb2wgcGFpbnRNZWRp
YUNvbnRyb2xzUGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSwgUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHN0YXRpYyB2b2lkIGFkanVzdE1l
ZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCopOwogfTsKIApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
KyNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RDaGlsZExpc3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgpA
QCAtNjIsMzkgKzYzLDYgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xhc3MgUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI7CiAjZW5kaWYKIAotLyoKLSAqICBUaGUgcGFpbnRpbmcgb2YgYSBs
YXllciBvY2N1cnMgaW4gdGhyZWUgZGlzdGluY3QgcGhhc2VzLiAgRWFjaCBwaGFzZSBpbnZvbHZl
cwotICogIGEgcmVjdXJzaXZlIGRlc2NlbnQgaW50byB0aGUgbGF5ZXIncyByZW5kZXIgb2JqZWN0
cy4gVGhlIGZpcnN0IHBoYXNlIGlzIHRoZSBiYWNrZ3JvdW5kIHBoYXNlLgotICogIFRoZSBiYWNr
Z3JvdW5kcyBhbmQgYm9yZGVycyBvZiBhbGwgYmxvY2tzIGFyZSBwYWludGVkLiAgSW5saW5lcyBh
cmUgbm90IHBhaW50ZWQgYXQgYWxsLgotICogIEZsb2F0cyBtdXN0IHBhaW50IGFib3ZlIGJsb2Nr
IGJhY2tncm91bmRzIGJ1dCBlbnRpcmVseSBiZWxvdyBpbmxpbmUgY29udGVudCB0aGF0IGNhbiBv
dmVybGFwIHRoZW0uCi0gKiAgSW4gdGhlIGZvcmVncm91bmQgcGhhc2UsIGFsbCBpbmxpbmVzIGFy
ZSBmdWxseSBwYWludGVkLiAgSW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzIHdpbGwgZ2V0IGFsbAot
ICogIHRocmVlIHBoYXNlcyBpbnZva2VkIG9uIHRoZW0gZHVyaW5nIHRoaXMgcGhhc2UuCi0gKi8K
LQotLy8gRklYTUU6IFRoZXNlIGVudW1zIHNob3VsZCBtb3ZlIHRvIHRoZWlyIG93biBoZWFkZXIg
c2luY2UgdGhleSdyZSB1c2VkIGJ5IG90aGVyIGhlYWRlcnMuCi1lbnVtIFBhaW50UGhhc2Ugewot
ICAgIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsCi0gICAgUGFpbnRQaGFzZUNoaWxkQmxvY2tC
YWNrZ3JvdW5kLAotICAgIFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMsCi0gICAgUGFp
bnRQaGFzZUZsb2F0LAotICAgIFBhaW50UGhhc2VGb3JlZ3JvdW5kLAotICAgIFBhaW50UGhhc2VP
dXRsaW5lLAotICAgIFBhaW50UGhhc2VDaGlsZE91dGxpbmVzLAotICAgIFBhaW50UGhhc2VTZWxm
T3V0bGluZSwKLSAgICBQYWludFBoYXNlU2VsZWN0aW9uLAotICAgIFBhaW50UGhhc2VDb2xsYXBz
ZWRUYWJsZUJvcmRlcnMsCi0gICAgUGFpbnRQaGFzZVRleHRDbGlwLAotICAgIFBhaW50UGhhc2VN
YXNrCi19OwotCi1lbnVtIFBhaW50QmVoYXZpb3JGbGFncyB7Ci0gICAgUGFpbnRCZWhhdmlvck5v
cm1hbCA9IDAsCi0gICAgUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgPSAxIDw8IDAsCi0gICAg
UGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0ID0gMSA8PCAxLAotICAgIFBhaW50QmVoYXZpb3JG
bGF0dGVuQ29tcG9zaXRpbmdMYXllcnMgPSAxIDw8IDIKLX07Ci10eXBlZGVmIHVuc2lnbmVkIFBh
aW50QmVoYXZpb3I7Ci0KIGVudW0gSGl0VGVzdEZpbHRlciB7CiAgICAgSGl0VGVzdEFsbCwKICAg
ICBIaXRUZXN0U2VsZiwKQEAgLTUyMiwzNiArNDkwLDYgQEAgcHVibGljOgogICAgIC8vIGZvciB0
aGUgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgb2YgaW5saW5lIGVsZW1lbnRzCiAgICAgLy8gdGhl
IG9mZnNldCBvZiBiYXNlbGluZSBmcm9tIHRoZSB0b3Agb2YgdGhlIG9iamVjdC4KICAgICB2aXJ0
dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGJvb2wgZmlyc3RMaW5lLCBib29sIGlzUm9vdExpbmVC
b3ggPSBmYWxzZSkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8T3ZlcmxhcFRlc3RSZXF1
ZXN0Q2xpZW50KiwgSW50UmVjdD4gT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwotCi0gICAgLyoKLSAg
ICAgKiBQYWludCB0aGUgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW4sIGNsaXBwZWQgYnkgKHh8eXx3
fGgpLgotICAgICAqICh0eHx0eSkgaXMgdGhlIGNhbGN1bGF0ZWQgcG9zaXRpb24gb2YgdGhlIHBh
cmVudAotICAgICAqLwotICAgIHN0cnVjdCBQYWludEluZm8gewotICAgICAgICBQYWludEluZm8o
R3JhcGhpY3NDb250ZXh0KiBuZXdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBuZXdSZWN0LCBQYWlu
dFBoYXNlIG5ld1BoYXNlLCBib29sIG5ld0ZvcmNlQmxhY2tUZXh0LAotICAgICAgICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBuZXdQYWludGluZ1Jvb3QsIExpc3RIYXNoU2V0PFJlbmRlcklubGlu
ZSo+KiBuZXdPdXRsaW5lT2JqZWN0cywKLSAgICAgICAgICAgICAgICAgIE92ZXJsYXBUZXN0UmVx
dWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDApCi0gICAgICAgICAgICA6IGNvbnRleHQo
bmV3Q29udGV4dCkKLSAgICAgICAgICAgICwgcmVjdChuZXdSZWN0KQotICAgICAgICAgICAgLCBw
aGFzZShuZXdQaGFzZSkKLSAgICAgICAgICAgICwgZm9yY2VCbGFja1RleHQobmV3Rm9yY2VCbGFj
a1RleHQpCi0gICAgICAgICAgICAsIHBhaW50aW5nUm9vdChuZXdQYWludGluZ1Jvb3QpCi0gICAg
ICAgICAgICAsIG91dGxpbmVPYmplY3RzKG5ld091dGxpbmVPYmplY3RzKQotICAgICAgICAgICAg
LCBvdmVybGFwVGVzdFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dDsKLSAgICAgICAgSW50
UmVjdCByZWN0OwotICAgICAgICBQYWludFBoYXNlIHBoYXNlOwotICAgICAgICBib29sIGZvcmNl
QmxhY2tUZXh0OwotICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdDsgLy8gdXNlZCB0
byBkcmF3IGp1c3Qgb25lIGVsZW1lbnQgYW5kIGl0cyB2aXN1YWwga2lkcwotICAgICAgICBMaXN0
SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogb3V0bGluZU9iamVjdHM7IC8vIHVzZWQgdG8gbGlzdCBv
dXRsaW5lcyB0aGF0IHNob3VsZCBiZSBwYWludGVkIGJ5IGEgYmxvY2sgd2l0aCBpbmxpbmUgY2hp
bGRyZW4KLSAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3Rz
OwotICAgIH07Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOwogCiAgICAgLy8gUmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgdGhlIHNp
emUgYW5kIHBvc2l0aW9uIG9mIHRoaXMgb2JqZWN0IGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzLgpA
QCAtNzg0LDE3ICs3MjIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5k
KGludCYgc3BvcywgaW50JiBlcG9zKSBjb25zdDsKIAotICAgIFJlbmRlck9iamVjdCogcGFpbnRp
bmdSb290Rm9yQ2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8pIGNvbnN0Ci0gICAgewotICAg
ICAgICAvLyBpZiB3ZSdyZSB0aGUgcGFpbnRpbmcgcm9vdCwga2lkcyBkcmF3IG5vcm1hbGx5LCBh
bmQgc2VlIHJvb3Qgb2YgMAotICAgICAgICByZXR1cm4gKCFwYWludEluZm8ucGFpbnRpbmdSb290
IHx8IHBhaW50SW5mby5wYWludGluZ1Jvb3QgPT0gdGhpcykgPyAwIDogcGFpbnRJbmZvLnBhaW50
aW5nUm9vdDsKLSAgICB9Ci0KLSAgICBib29sIHNob3VsZFBhaW50V2l0aGluUm9vdChQYWludElu
Zm8mIHBhaW50SW5mbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhcGFpbnRJbmZvLnBh
aW50aW5nUm9vdCB8fCBwYWludEluZm8ucGFpbnRpbmdSb290ID09IHRoaXM7Ci0gICAgfQotCiAg
ICAgYm9vbCBoYXNPdmVycmlkZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2hhc092ZXJyaWRlU2l6
ZTsgfQogICAgIHZvaWQgc2V0SGFzT3ZlcnJpZGVTaXplKGJvb2wgYikgeyBtX2hhc092ZXJyaWRl
U2l6ZSA9IGI7IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lv
biA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBSZW5kZXJQYXRoOjpwYWludChQYWludEluZm8m
IHBhaW50SQogICAgIGJvb2wgZHJhd3NPdXRsaW5lID0gc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkg
JiYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IGNoaWxkUGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSk7CiAgICAgaWYgKGRyYXdzT3V0
bGluZSB8fCBjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewog
ICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGFwcGx5VHJh
bnNmb3JtVG9QYWludEluZm8oY2hpbGRQYWludEluZm8sIG1fbG9jYWxUcmFuc2Zvcm0pOworICAg
ICAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9ybShtX2xvY2FsVHJhbnNmb3JtKTsKICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IDA7CiAKICAgICAgICAgaWYg
KGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
aWYgKCFzaG91bGRQYWludFdpdGhpblJvb3QocGFpbnRJbmZvKSkKKyAgICBpZiAoIXBhaW50SW5m
by5zaG91bGRQYWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBib29sIGRyYXdTZWxlY3Rpb25UaW50ID0gc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25O
b25lICYmICFkb2N1bWVudCgpLT5wcmludGluZygpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wg
UmVuZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KFBhaW50SW4KICAgICAgICAgICAgICYmIHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFzaG91bGRQ
YWludFdpdGhpblJvb3QocGFpbnRJbmZvKSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAg
Ly8gaWYgd2UncmUgaW52aXNpYmxlIG9yIGhhdmVuJ3QgcmVjZWl2ZWQgYSBsYXlvdXQgeWV0LCB0
aGVuIGp1c3QgYmFpbC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUmVuZGVyU1ZH
Q29udGFpbmVyOjpwYWludChQYWludEluZm8KICAgICAvLyBMZXQgdGhlIFJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyIHN1YmNsYXNzIGNsaXAgaWYgbmVjZXNzYXJ5CiAgICAgYXBwbHlWaWV3cG9y
dENsaXAoY2hpbGRQYWludEluZm8pOwogCi0gICAgYXBwbHlUcmFuc2Zvcm1Ub1BhaW50SW5mbyhj
aGlsZFBhaW50SW5mbywgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKKyAgICBjaGlsZFBhaW50
SW5mby5hcHBseVRyYW5zZm9ybShsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkpOwogCiAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IDA7CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5n
Qm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAgICAgICAgIGNvbnRp
bnVlUmVuZGVyaW5nID0gcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBjaGlsZFBhaW50
SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlcik7CiAKICAgICBpZiAoY29udGludWVSZW5kZXJpbmcp
IHsKLSAgICAgICAgY2hpbGRQYWludEluZm8ucGFpbnRpbmdSb290ID0gcGFpbnRpbmdSb290Rm9y
Q2hpbGRyZW4oY2hpbGRQYWludEluZm8pOworICAgICAgICBjaGlsZFBhaW50SW5mby51cGRhdGVQ
YWludGluZ1Jvb3RGb3JDaGlsZHJlbih0aGlzKTsKICAgICAgICAgZm9yIChSZW5kZXJPYmplY3Qq
IGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmco
KSkKICAgICAgICAgICAgIGNoaWxkLT5wYWludChjaGlsZFBhaW50SW5mbywgMCwgMCk7CiAgICAg
fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNw
cAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBBZmZpbmVUcmFu
c2Zvcm0gUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6CiAgICAgcmV0dXJuIHRyYW5zZm9ybTsKIH0K
IAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6ZHJhdyhSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3ZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmRyYXcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcio+LCBjdXJyZW50bHlEcmF3aW5nTWFya2Vy
cywgKCkpOwogCkBAIC0xNTUsOSArMTU1LDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
cjo6ZHJhdyhSZW5kZQogICAgICAgICByZXR1cm47CiAKICAgICBjdXJyZW50bHlEcmF3aW5nTWFy
a2Vycy5hZGQodGhpcyk7Ci0gICAgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbyhwYWludElu
Zm8pOworICAgIFBhaW50SW5mbyBpbmZvKHBhaW50SW5mbyk7CiAgICAgaW5mby5jb250ZXh0LT5z
YXZlKCk7Ci0gICAgYXBwbHlUcmFuc2Zvcm1Ub1BhaW50SW5mbyhpbmZvLCB0cmFuc2Zvcm0pOwor
ICAgIGluZm8uYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBSZW5kZXJTVkdDb250YWlu
ZXI6OnBhaW50KGluZm8sIDAsIDApOwogICAgIGluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgJKHJldmlz
aW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVDbGllbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDbGll
bnQoUmVuZGVyT2JqZWN0Kik7CiAKLSAgICB2b2lkIGRyYXcoUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIGRyYXcoUGFpbnRJbmZvJiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICAvLyBDYWxjdWxhdGVzIG1hcmtlciBib3Vu
ZGFyaWVzLCBtYXBwZWQgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgY29vcmRpbmF0ZSBzcGFjZQog
ICAgIEZsb2F0UmVjdCBtYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWFy
a2VyVHJhbnNmb3JtYXRpb24pIGNvbnN0OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9v
dC5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9v
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIFJlbmRlclNWR1Jv
b3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgaWYgKCFmaXJzdENoaWxkKCkgJiYgIXNlbGZX
aWxsUGFpbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhl
IFBhaW50SW5mbyBiZWNhdXNlIGFwcGx5VHJhbnNmb3JtVG9QYWludEluZm8gd2lsbCBtb2RpZnkg
dGhlIGRhbWFnZSByZWN0LgotICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGNoaWxkUGFpbnRJ
bmZvKHBhaW50SW5mbyk7CisgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIFBhaW50SW5mbyBiZWNh
dXNlIGFwcGx5VHJhbnNmb3JtIHdpbGwgbW9kaWZ5IHRoZSBkYW1hZ2UgcmVjdC4KKyAgICBQYWlu
dEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKICAgICBjaGlsZFBhaW50SW5mby5jb250
ZXh0LT5zYXZlKCk7CiAKICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNsaXAgLSBub3Qg
YWZmZWN0ZWQgYnkgb3ZlcmZsb3cgaGFuZGxpbmcKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFJl
bmRlclNWR1Jvb3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAKICAgICAvLyBDb252ZXJ0IGZyb20g
Y29udGFpbmVyIG9mZnNldHMgKGh0bWwgcmVuZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRyYW5zZm9y
bSAoc3ZnIHJlbmRlcmVycykuCiAgICAgLy8gVHJhbnNmb3JtIGZyb20gb3VyIHBhaW50IGNvbnRh
aW5lcidzIGNvb3JkaW5hdGUgc3lzdGVtIHRvIG91ciBsb2NhbCBjb29yZHMuCi0gICAgYXBwbHlU
cmFuc2Zvcm1Ub1BhaW50SW5mbyhjaGlsZFBhaW50SW5mbywgbG9jYWxUb1JlcGFpbnRDb250YWlu
ZXJUcmFuc2Zvcm0ocGFyZW50T3JpZ2luSW5Db250YWluZXIpKTsKKyAgICBjaGlsZFBhaW50SW5m
by5hcHBseVRyYW5zZm9ybShsb2NhbFRvUmVwYWludENvbnRhaW5lclRyYW5zZm9ybShwYXJlbnRP
cmlnaW5JbkNvbnRhaW5lcikpOwogCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
ciA9IDA7CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCShyZXZpc2lv
biA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWlu
dEluZm8mIHBhaQogCiAgICAgUGFpbnRJbmZvIGJsb2NrSW5mbyhwYWludEluZm8pOwogICAgIGJs
b2NrSW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgYXBwbHlUcmFuc2Zvcm1Ub1BhaW50SW5mbyhi
bG9ja0luZm8sIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSk7CisgICAgYmxvY2tJbmZvLmFwcGx5
VHJhbnNmb3JtKGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSk7CiAgICAgUmVuZGVyQmxvY2s6OnBh
aW50KGJsb2NrSW5mbywgMCwgMCk7CiAgICAgYmxvY2tJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsK
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCShyZXZp
c2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQ
YXJ0OjpwYWludEludG9SZWN0KAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBOb3cgZG8gdGhl
IHBhaW50LgotICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIHBhaW50SW5mbyhncmFwaGljc0Nv
bnRleHQsIHJlY3QsIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIGZhbHNlLCAwLCAwKTsKKyAg
ICBQYWludEluZm8gcGFpbnRJbmZvKGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgUGFpbnRQaGFzZUJs
b2NrQmFja2dyb3VuZCwgZmFsc2UsIDAsIDApOwogICAgIHBhaW50KHBhaW50SW5mbywgdHgsIHR5
KTsKICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRz
OwogICAgIHBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZTo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogCiAgICAgUGFpbnRJbmZvIGluZm8ocGFpbnRJbmZv
KTsKICAgICBpbmZvLnBoYXNlID0gcGFpbnRQaGFzZTsKLSAgICBpbmZvLnBhaW50aW5nUm9vdCA9
IHBhaW50aW5nUm9vdEZvckNoaWxkcmVuKHBhaW50SW5mbyk7CisgICAgaW5mby51cGRhdGVQYWlu
dGluZ1Jvb3RGb3JDaGlsZHJlbih0aGlzKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgaWYgKGNoaWxkLT5pc0JveCgpICYmICF0b1JlbmRlckJveChjaGlsZCktPmhhc1Nl
bGZQYWludGluZ0xheWVyKCkgJiYgKGNoaWxkLT5pc1RhYmxlU2VjdGlvbigpIHx8IGNoaWxkID09
IG1fY2FwdGlvbikpCkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRP
YmplY3QoUGFpbnRJbmZvJgogCiB2b2lkIFJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKIHsKLSAgICBpZiAoIXNob3Vs
ZFBhaW50V2l0aGluUm9vdChwYWludEluZm8pKQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBh
aW50V2l0aGluUm9vdCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IHcgPSB3aWR0
aCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA2
MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2Nyw3ICs2NjcsNyBAQCBpbnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxm
Qm90dG9tKGJvCiB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCB0eCwgaW50IHR5KQogewogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZUNvbGxhcHNlZFRhYmxlQm9yZGVycyAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSkgewotICAgICAgICBpZiAoIXNob3VsZFBhaW50V2l0aGluUm9vdChwYWludEluZm8pKQor
ICAgICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QodGhpcykpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdHggKz0geCgpOwpAQCAtODI4LDcgKzgyOCw3IEBA
IHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmQKIAogdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBpbnQgdHgsIGludCB0eSwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KQogewotICAg
IGlmICghc2hvdWxkUGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykpCisgICAgaWYgKCFwYWludElu
Zm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHRoaXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIWJhY2tncm91bmRPYmplY3QpCkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBSZW5kZXJUYWJs
ZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZQogCiB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7Ci0g
ICAgaWYgKCFzaG91bGRQYWludFdpdGhpblJvb3QocGFpbnRJbmZvKSkKKyAgICBpZiAoIXBhaW50
SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QodGhpcykpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlbmRlclRhYmxlKiB0YWJsZUVsdCA9IHRhYmxlKCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgUmVuZGVyVGhl
bWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2UKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWU6
OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
CiB7CiAgICAgLy8gSWYgcGFpbnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRp
bmcgY29udHJvbCB0aW50cywgdGhlbiBqdXN0IGJhaWwuCiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0
aW5nIGNvbnRyb2wgdGludHMsIGp1c3Qgc2NoZWR1bGUgYSByZXBhaW50IGlmIHRoZSB0aGVtZSBz
dXBwb3J0cyB0aW50aW5nCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFp
bnQoUmVuZGVyT2JqZWN0KiBvLAogICAgIHJldHVybiB0cnVlOyAvLyBXZSBkb24ndCBzdXBwb3J0
IHRoZSBhcHBlYXJhbmNlLCBzbyBsZXQgdGhlIG5vcm1hbCBiYWNrZ3JvdW5kL2JvcmRlciBwYWlu
dC4KIH0KIAotYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcikKK2Jvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seShSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIGlm
IChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJP
bmx5KFJlbmRlcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZTo6cGFp
bnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lOjpwYWlu
dERlY29yYXRpb25zKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkzOCw3ICs5MzgsNyBAQCBi
b29sIFJlbmRlclRoZW1lOjpzdXBwb3J0c01ldGVyKENvbnRyb2xQCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFJlbmRlclRoZW1lOjpwYWludE1ldGVyKFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpCitib29sIFJlbmRlclRo
ZW1lOjpwYWludE1ldGVyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKQogewogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDkgQEAgcHVibGljOgogICAgIC8vIFRoaXMgbWV0
aG9kIGlzIGNhbGxlZCB0byBwYWludCB0aGUgd2lkZ2V0IGFzIGEgYmFja2dyb3VuZCBvZiB0aGUg
UmVuZGVyT2JqZWN0LiAgQSB3aWRnZXQncyBmb3JlZ3JvdW5kLCBlLmcuLCB0aGUKICAgICAvLyB0
ZXh0IG9mIGEgYnV0dG9uLCBpcyBhbHdheXMgcmVuZGVyZWQgYnkgdGhlIGVuZ2luZSBpdHNlbGYu
ICBUaGUgYm9vbGVhbiByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCiAgICAgLy8gd2hldGhlciB0aGUg
Q1NTIGJvcmRlci9iYWNrZ3JvdW5kIHNob3VsZCBhbHNvIGJlIHBhaW50ZWQuCi0gICAgYm9vbCBw
YWludChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKLSAgICBib29sIHBhaW50Qm9yZGVyT25seShSZW5kZXJPYmplY3QqLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICBib29sIHBh
aW50RGVjb3JhdGlvbnMoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBwYWludEJvcmRlck9ubHko
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIGJv
b2wgcGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICAvLyBUaGUgcmVtYWluaW5nIG1ldGhvZHMgc2hvdWxkIGJlIGlt
cGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwb3J0aW9uIG9mIHRoZSB0aGVtZSwg
ZS5nLiwKICAgICAvLyBSZW5kZXJUaGVtZU1hYy5jcHAgZm9yIE1hYyBPUyBYLgpAQCAtMTczLDcg
KzE3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIHNjcm9s
bGJhckNvbnRyb2xTaXplRm9yUGFydChDb250cm9sUGFydCkgeyByZXR1cm4gUmVndWxhclNjcm9s
bGJhcjsgfQogCiAgICAgLy8gTWV0aG9kIGZvciBwYWludGluZyB0aGUgY2FwcyBsb2NrIGluZGlj
YXRvcgotICAgIHZpcnR1YWwgYm9vbCBwYWludENhcHNMb2NrSW5kaWNhdG9yKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIDA7IH07CisgICAgdmlydHVhbCBib29sIHBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIDA7IH07
CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQogICAgIC8vIFJldHVybnMgdGhlIHJlcGVhdCBp
bnRlcnZhbCBvZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgpAQCAtMjE2LDgy
ICsyMTYsODIgQEAgcHJvdGVjdGVkOgogI2lmICFVU0UoTkVXX1RIRU1FKQogICAgIC8vIE1ldGhv
ZHMgZm9yIGVhY2ggYXBwZWFyYW5jZSB2YWx1ZS4KICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hl
Y2tib3hTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0IHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGFkanVzdFJhZGlvU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdCB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QnV0dG9uU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0IHsgfQog
CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRJbm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RPdXRlclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50T3V0ZXJTcGluQnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRPdXRlclNwaW5CdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxl
bWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVM
aXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlz
dChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUo
Q1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgRU5BQkxF
KE1FVEVSX1RBRykKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWV0ZXJTdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50TWV0ZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWV0ZXIoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUFJPR1JFU1NfVEFHKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJl
bmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9u
U3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlv
blN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIHBhaW50
TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlk
ZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVk
aWFWb2x1bWVTbGlkZXJDb250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUmV3aW5kQnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVJldHVyblRv
UmVhbHRpbWVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ29udHJvbHNCYWNrZ3JvdW5kKFJlbmRlck9i
amVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUN1cnJlbnRUaW1lKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVRpbWVSZW1h
aW5pbmcoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlh
RnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxh
eUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFDb250cm9sc0JhY2tncm91bmQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRNZWRpYUN1cnJlbnRUaW1lKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBhaW50
TWVkaWFUaW1lUmVtYWluaW5nKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAKIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIGZv
ciBzdGF0ZSBxdWVyeWluZwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJv
bWl1bU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1NYWMuaAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxNSBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50
TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVy
VHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFDb250cm9sc0JhY2tncm91
bmQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVHJhY2so
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhQ29udHJvbHNCYWNrZ3JvdW5kKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
UmVuZGVyTWVkaWFDb250cm9sUGFydChDb250cm9sUGFydCwgRWxlbWVudCopOwogICAgIHZpcnR1
YWwgU3RyaW5nIGV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
IAogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1N
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1
bU1hYy5tbQkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNocm9taXVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksMjIgKzEwOSwyMiBAQCBib29s
IFJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnNob3VsZFJlbmRlCiAgICAgcmV0dXJuIFJlbmRlck1l
ZGlhQ29udHJvbHNDaHJvbWl1bTo6c2hvdWxkUmVuZGVyTWVkaWFDb250cm9sUGFydChwYXJ0LCBl
KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpwYWludE1lZGlhUGxheUJ1dHRv
bihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bU1h
Yzo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBSZW5k
ZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFQbGF5
QnV0dG9uLCBvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVD
aHJvbWl1bU1hYzo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtOjpw
YWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhTXV0ZUJ1dHRvbiwgb2JqZWN0LCBwYWludEluZm8s
IHJlY3QpOwogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50TWVkaWFTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJv
bWl1bU1hYzo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1
cm4gUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1l
ZGlhU2xpZGVyLCBvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bU1hYzo6cGFpbnRNZWRpYUNvbnRyb2xzQmFja2dyb3VuZChSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRNZWRpYUNv
bnRyb2xzQmFja2dyb3VuZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlh
Q29udHJvbHNDaHJvbWl1bTo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVRpbWVsaW5lQ29u
dGFpbmVyLCBvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CiB9CkBAIC0xMzQsMTIgKzEzNCwxMiBA
QCBTdHJpbmcgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6ZXh0cmFNZWRpCiAgICAgcmV0dXJuIFN0
cmluZyhtZWRpYUNvbnRyb2xzQ2hyb21pdW1Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVk
aWFDb250cm9sc0Nocm9taXVtVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogCi1ib29sIFJlbmRl
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRNZWRp
YVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gUmVuZGVyTWVk
aWFDb250cm9sc0Nocm9taXVtOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhVm9sdW1lU2xp
ZGVyLCBvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJv
bWl1bU1hYzo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xz
Q2hyb21pdW06OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFWb2x1bWVTbGlkZXJUaHVtYiwg
b2JqZWN0LCBwYWludEluZm8sIHJlY3QpOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNSw3ICsyMzUsNyBAQCBJbnRSZWN0IGNlbnRlcihjb25zdCBJbnRSZWN0JiBvcmlnaW5hbCwg
CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wg
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgc3RhdGljIElt
YWdlKiBjb25zdCBjaGVja2VkSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImxp
bnV4Q2hlY2tib3hPbiIpLnJlbGVhc2VSZWYoKTsKICAgICBzdGF0aWMgSW1hZ2UqIGNvbnN0IHVu
Y2hlY2tlZEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJsaW51eENoZWNrYm94
T2ZmIikucmVsZWFzZVJlZigpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVD
aHJvbWl1bVNraWE6OnNldENoZWNrYm8KICAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBzaXplKTsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRSYWRpbyhSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRSYWRpbyhSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBz
dGF0aWMgSW1hZ2UqIGNvbnN0IGNoZWNrZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibGludXhSYWRpb09uIikucmVsZWFzZVJlZigpOwogICAgIHN0YXRpYyBJbWFnZSogY29u
c3QgdW5jaGVja2VkSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImxpbnV4UmFk
aW9PZmYiKS5yZWxlYXNlUmVmKCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIFNrQ29sb3Ig
YnJpZ2h0ZW5Db2xvcihkb3VibGUgaCwgZAogICAgIHJldHVybiBtYWtlUkdCQUZyb21IU0xBKGgs
IHMsIGwsIDEuMCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QnV0dG9uTGlrZShSZW5kZXJUaGVt
ZSogdGhlbWUsIFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
IGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbkxpa2UoUmVu
ZGVyVGhlbWUqIHRoZW1lLCBSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBTa0NhbnZhcyogY29uc3QgY2FudmFzID0gaS5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgU2tQYWludCBwYWludDsKQEAg
LTM2MCw3ICszNjAsNyBAQCBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbkxpa2UoUmVuZGVyVGhlbWUq
CiAgICAgY2FudmFzLT5kcmF3UG9pbnQocmlnaHQgLSAyLCBib3R0b20gLSAyLCBwYWludCk7CiB9
CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50QnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludEJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBw
YWludEJ1dHRvbkxpa2UodGhpcywgbywgaSwgcmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
Mzc1LDEyICszNzUsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0QnV0
dAogfQogCiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50VGV4dEZpZWxkKFJl
bmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IElu
dFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tp
YTo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tp
YTo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gcGFpbnRUZXh0RmllbGQobywgaSwgcik7CiB9
CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YWRqdXN0
U2VhcgogICAgICBzdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNo
RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2Vh
cmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJl
Y3QmIHIpCiB7CiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOwogfQpAQCAtNDE3
LDcgKzQxNyw3IEBAIEludFJlY3QgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmNvbnZlcnQKICAg
ICByZXR1cm4gcGFydFJlY3Q7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBh
aW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBjYW5jZWxCdXR0b25PYmpl
Y3QsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uKFJlbmRlck9iamVjdCogY2FuY2VsQnV0dG9uT2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICAvLyBHZXQgdGhlIHJlbmRl
cmVyIG9mIDxpbnB1dD4gZWxlbWVudC4KICAgICBOb2RlKiBpbnB1dCA9IGNhbmNlbEJ1dHRvbk9i
amVjdC0+bm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2
b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFyCiAgICAgc3R5bGUtPnNldEhl
aWdodChMZW5ndGgobWFnbmlmaWVyU2l6ZSwgRml4ZWQpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVt
ZUNocm9taXVtU2tpYTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9i
amVjdCogbWFnbmlmaWVyT2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbWFnbmlmaWVy
T2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsK
ICAgICAvLyBHZXQgdGhlIHJlbmRlcmVyIG9mIDxpbnB1dD4gZWxlbWVudC4KICAgICBOb2RlKiBp
bnB1dCA9IG1hZ25pZmllck9iamVjdC0+bm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKQEAg
LTQ5NSw3ICs0OTUsNyBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RTZWFy
CiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgobWFnbmlmaWVySGVpZ2h0LCBGaXhlZCkpOwog
fQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbihSZW5kZXJPYmplY3QqIG1hZ25pZmllck9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bVNraWE6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVj
dCogbWFnbmlmaWVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKIHsKICAgICAvLyBHZXQgdGhlIHJlbmRlcmVyIG9mIDxpbnB1dD4gZWxlbWVudC4K
ICAgICBOb2RlKiBpbnB1dCA9IG1hZ25pZmllck9iamVjdC0+bm9kZSgpLT5zaGFkb3dBbmNlc3Rv
ck5vZGUoKTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lh
OjpwYWludFNlYXJjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhOjpwYWludE1lZGlhQ29udHJvbHNCYWNrZ3JvdW5kKFJlbmRlck9iamVjdCogb2Jq
ZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZWRpYUNvbnRy
b2xzQmFja2dyb3VuZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHJl
dHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnBhaW50TWVkaWFDb250cm9sc1BhcnQo
TWVkaWFUaW1lbGluZUNvbnRhaW5lciwgb2JqZWN0LCBwYWludEluZm8sIHJlY3QpOwpAQCAtNTI5
LDcgKzUyOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWEKICNl
bmRpZgogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludE1lZGlhU2xpZGVy
VHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIEVOQUJM
RShWSURFTykKICAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVtOjpwYWludE1l
ZGlhQ29udHJvbHNQYXJ0KE1lZGlhU2xpZGVyLCBvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CkBA
IC01NDEsNyArNTQxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZWRp
YQogI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWFW
b2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVy
VGhlbWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xz
Q2hyb21pdW06OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFWb2x1bWVTbGlkZXIsIG9iamVj
dCwgcGFpbnRJbmZvLCByZWN0KTsKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIFJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjphZGp1c3RTbGlkCiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNo
cm9taXVtU2tpYTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZWRpYVNsaWRlclRodW1i
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgcmV0dXJuIFJlbmRlck1l
ZGlhQ29udHJvbHNDaHJvbWl1bTo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVNsaWRlclRo
dW1iLCBvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CkBAIC01NzQsNyArNTc0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZWRpYQogI2VuZGlmCiB9CiAKLWJvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50
TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW06OnBhaW50TWVkaWFDb250
cm9sc1BhcnQoTWVkaWFWb2x1bWVTbGlkZXJUaHVtYiwgb2JqZWN0LCBwYWludEluZm8sIHJlY3Qp
OwpAQCAtNTg2LDcgKzU4Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50
TWVkaWEKICNlbmRpZgogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludE1l
ZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bVNraWE6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bTo6
cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVBsYXlCdXR0b24sIG9iamVjdCwgcGFpbnRJbmZv
LCByZWN0KTsKQEAgLTU5OCw3ICs1OTgsNyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lh
OjpwYWludE1lZGlhCiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6
cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzQ2hy
b21pdW06OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFNdXRlQnV0dG9uLCBvYmplY3QsIHBh
aW50SW5mbywgcmVjdCk7CkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9t
aXVtU2tpYTo6YWRqdXN0TWVudQogICAgIHN0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUhlaWdodCgpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tp
YTo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVt
U2tpYTo6cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBTa0NhbnZhcyogY29uc3QgY2FudmFzID0gaS5j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgY29uc3QgaW50IHJpZ2h0
ID0gcmVjdC54KCkgKyByZWN0LndpZHRoKCk7CkBAIC02NDYsMTIgKzY0NiwxMiBAQCB2b2lkIFJl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphZGp1c3RNZW51CiB9CiAKIC8vIFVzZWQgdG8gcGFpbnQg
c3R5bGVkIG1lbnVsaXN0cyAoaS5lLiB3aXRoIGEgbm9uLWRlZmF1bHQgYm9yZGVyKQotYm9vbCBS
ZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0
KQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICByZXR1cm4gcGFpbnRNZW51TGlzdChvLCBpLCByZWN0KTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1c3QgcGFp
bnQgYSBncmV5IGJveCBmb3Igbm93IChtYXRjaGVzIHRoZSBjb2xvciBvZiBhIHNjcm9sbGJhciBi
YWNrZ3JvdW5kLgogICAgIFNrQ2FudmFzKiBjb25zdCBjYW52YXMgPSBpLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jYW52YXMoKTsKQEAgLTY3MCw3ICs2NzAsNyBAQCBib29sIFJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNsaWRlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IC8vIE1ha2UgYSB0aHVtYiBzaW1pbGFyIHRvIHRoZSBzY3JvbGxiYXIgdGh1bWIuCiAgICAgY29u
c3QgYm9vbCBob3ZlcmVkID0gaXNIb3ZlcmVkKG8pIHx8IHRvUmVuZGVyU2xpZGVyKG8tPnBhcmVu
dCgpKS0+aW5EcmFnTW9kZSgpOwpAQCAtODEyLDcgKzgxMiw3IEBAIGRvdWJsZSBSZW5kZXJUaGVt
ZUNocm9taXVtU2tpYTo6YW5pbWF0aW8KICAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRl
cnZhbCAqIHByb2dyZXNzQW5pbWF0aW9uRnJtYWVzICogMjsgLy8gIjIiIGZvciBiYWNrIGFuZCBm
b3J0aAogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFByb2dyZXNzQmFy
KFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUNocm9t
aXVtU2tpYTo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgc3Rh
dGljIEltYWdlKiBiYXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibGludXhQ
cm9ncmVzc0JhciIpLnJlbGVhc2VSZWYoKTsKICAgICBzdGF0aWMgSW1hZ2UqIHZhbHVlSW1hZ2Ug
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImxpbnV4UHJvZ3Jlc3NWYWx1ZSIpLnJlbGVh
c2VSZWYoKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNr
aWEuaAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtU2tpYS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw0MSArNjYsNDEgQEAgY2xhc3MgUmVu
ZGVyUHJvZ3Jlc3M7CiAKICAgICAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShS
ZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94
KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICAg
ICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50VGV4
dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmly
dHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
LSAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhQ29udHJvbHNCYWNrZ3JvdW5kKFJlbmRlck9iamVjdCosIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYUNvbnRyb2xzQmFja2dyb3VuZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKIAogICAgICAgICAvLyBNZW51TGlzdCByZWZlcnMgdG8gYW4gdW5zdHls
ZWQgbWVudWxpc3QgKG1lYW5pbmcgYSBtZW51bGlzdCB3aXRob3V0CiAgICAgICAgIC8vIGJhY2tn
cm91bmQtY29sb3Igb3IgYm9yZGVyIHNldCkgYW5kIE1lbnVMaXN0QnV0dG9uIHJlZmVycyB0byBh
IHN0eWxlZApAQCAtMTEyLDE3ICsxMTIsMTcgQEAgY2xhc3MgUmVuZGVyUHJvZ3Jlc3M7CiAgICAg
ICAgIC8vIGNvZGVwYXRoLiBXZSBuZXZlciBnbyBkb3duIGJvdGguIEFuZCBpbiBib3RoIGNhc2Vz
LCB0aGV5IHJlbmRlciB0aGUKICAgICAgICAgLy8gZW50aXJlIG1lbnVsaXN0LgogICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVM
aXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxp
c3RCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVh
bCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0
OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAjaWYgRU5BQkxFKFBST0dS
RVNTX1RBRykKICAgICAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxG
b3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGRv
dWJsZSBhbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29u
c3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAjZW5kaWYKIAogICAgICAgICAvLyBUaGVzZSBtZXRo
b2RzIGRlZmluZSB0aGUgcGFkZGluZyBmb3IgdGhlIE1lbnVMaXN0J3MgaW5uZXIgYmxvY2suCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAkocmV2
aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDE2ICszNzQsMTYgQEAgdm9pZCBSZW5kZXJUaGVt
ZUNocm9taXVtV2luOjphZGp1c3RTbGlkZQogICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtU2tp
YTo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKG8pOwogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hyb21p
dW1XaW46OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1
bVdpbjo6cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gcGFpbnRCdXR0b24obywgaSwgcik7CiB9
Ci1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jv
b2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gcGFpbnRC
dXR0b24obywgaSwgcik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRC
dXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIp
CiB7CiAgICAgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEgPSBnZXRUaGVtZURhdGEobyk7CiAK
QEAgLTM5NiwxMiArMzk2LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRC
dXR0b24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkSW50ZXJuYWwobywg
aSwgciwgdHJ1ZSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFNs
aWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByKQogewogICAgIGNvbnN0IFRoZW1lRGF0YSYgdGhlbWVEYXRhID0gZ2V0VGhlbWVEYXRh
KG8pOwogCkBAIC00MTQsMTMgKzQxNCwxMyBAQCBib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50U2xpZGVyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lQ2hy
b21pdW1XaW46OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFj
ayhvLCBpLCByKTsKIH0KIAogLy8gVXNlZCB0byBwYWludCB1bnN0eWxlZCBtZW51bGlzdHMgKGku
ZS4gd2l0aCB0aGUgZGVmYXVsdCBib3JkZXIpCi1ib29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6
cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UmVjdCYgcikKIHsKICAgICBpZiAoIW8tPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYwOSw3ICs2MDksNyBAQCBUaGVtZURhdGEgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6
Z2V0VGhlCiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUZXh0RmllbGRJ
bnRlcm5hbChSZW5kZXJPYmplY3QqIG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UGFpbnRJbmZvJiBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEludFJlY3QmIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3RWRnZXMpCiB7CkBAIC02NzcsNyArNjc3
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjphZGp1c3RQcm9ncgogewogfQogCi1i
b29sIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikK
K2Jvb2wgUmVuZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBpZiAo
IW8tPmlzUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5oCShyZXZpc2lvbiA2MjA5OSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uaAkod29ya2luZyBjb3B5KQpA
QCAtNjQsMTIgKzY0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKSBjb25zdDsKIAogICAgICAg
ICAvLyBWYXJpb3VzIHBhaW50IGZ1bmN0aW9ucy4KLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50
Q2hlY2tib3goUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9i
amVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwot
ICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBw
YWludFJhZGlvKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50
VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAKICAgICAgICAgLy8gTWVudUxpc3QgcmVmZXJzIHRvIGFuIHVuc3R5bGVkIG1l
bnVsaXN0IChtZWFuaW5nIGEgbWVudWxpc3Qgd2l0aG91dAogICAgICAgICAvLyBiYWNrZ3JvdW5k
LWNvbG9yIG9yIGJvcmRlciBzZXQpIGFuZCBNZW51TGlzdEJ1dHRvbiByZWZlcnMgdG8gYSBzdHls
ZWQKQEAgLTgwLDcgKzgwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbiBz
aG9ydCwgd2UgZWl0aGVyIGdvIGRvd24gdGhlIE1lbnVMaXN0IGNvZGUgcGF0aCBvciB0aGUgTWVu
dUxpc3RCdXR0b24KICAgICAgICAgLy8gY29kZXBhdGguIFdlIG5ldmVyIGdvIGRvd24gYm90aC4g
QW5kIGluIGJvdGggY2FzZXMsIHRoZXkgcmVuZGVyIHRoZQogICAgICAgICAvLyBlbnRpcmUgbWVu
dWxpc3QuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAgICAgLy8gT3ZlcnJpZGUgUmVuZGVyVGhlbWVD
aHJvbWl1bVNraWEncyBzZXREZWZhdWx0Rm9udFNpemUgbWV0aG9kIHRvIGFsc28gcmVzZXQgdGhl
IGxvY2FsIGZvbnQgcHJvcGVydHkgY2FjaGVzLgogICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBS
ZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6c2V0RGVmYXVsdEZvbnRTaXplKCkgcmVnYXJkaW5nIHVn
bGluZXNzIG9mIHRoaXMgaGFjay4KQEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dy
ZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgZG91YmxlIGFu
aW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jl
c3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
I2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMDcsNyArMTA3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIFRoZW1lRGF0YSBnZXRUaGVtZURhdGEoUmVuZGVyT2JqZWN0Kik7
CiAKLSAgICAgICAgYm9vbCBwYWludFRleHRGaWVsZEludGVybmFsKFJlbmRlck9iamVjdCosIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYsIGJvb2wpOworICAg
ICAgICBib29sIHBhaW50VGV4dEZpZWxkSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYsIGJvb2wpOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaAkocmV2aXNpb24gNjIw
OTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCwxMSArNzgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJu
YWxQYWRkaW5nVG9wKFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgcG9wdXBJ
bnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRDYXBzTG9ja0luZGljYXRvcihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRDYXBzTG9ja0luZGljYXRvcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKICNpZiBFTkFCTEUoTUVURVJfVEFHKQogICAgIHZpcnR1YWwgSW50
U2l6ZSBtZXRlclNpemVGb3JCb3VuZHMoY29uc3QgUmVuZGVyTWV0ZXIqLCBjb25zdCBJbnRSZWN0
JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWV0ZXIoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCBib29sIHBhaW50TWV0ZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01ldGVyKENvbnRyb2xQYXJ0LCBi
b29sIGlzSG9yaXpvbnRhbCkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTA0LDU4ICsxMDQsNTggQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9ycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0
QXJlYVN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoQ1NTU3R5
bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCiAjaWYgRU5BQkxF
KFBST0dSRVNTX1RBRykKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShD
U1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50
UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJP
YmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRl
clRyYWNrU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwogCi0gICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9v
bCBwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50
U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVj
b3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhRnVsbHNjcmVl
bkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlh
U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFSZXdpbmRCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFDb250cm9sc0JhY2tn
cm91bmQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFDdXJyZW50VGltZShSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVRpbWVSZW1haW5pbmcoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dmlydHVhbCBib29sIHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrRm9yd2Fy
ZEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50
TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVk
aWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFDb250cm9s
c0JhY2tncm91bmQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ3VycmVudFRpbWUoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lZGlhVGltZVJlbWFpbmluZyhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBNZWRpYSBjb250cm9scwogICAgIHZpcnR1YWwgU3Ry
aW5nIGV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IEludFNpemUqIHBvcHVwQnV0dG9uU2l6ZXMoKSBjb25zdDsKICAg
ICBjb25zdCBpbnQqIHBvcHVwQnV0dG9uTWFyZ2lucygpIGNvbnN0OwogICAgIGNvbnN0IGludCog
cG9wdXBCdXR0b25QYWRkaW5nKE5TQ29udHJvbFNpemUpIGNvbnN0OwotICAgIHZvaWQgcGFpbnRN
ZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBhaW50TWVudUxpc3RCdXR0
b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogICAgIGNvbnN0IEludFNpemUqIG1lbnVMaXN0U2l6ZXMoKSBjb25zdDsKIAogICAgIGNv
bnN0IEludFNpemUqIHNlYXJjaEZpZWxkU2l6ZXMoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsNyArNzA2LDcgQEAgTlND
b250cm9sU2l6ZSBSZW5kZXJUaGVtZU1hYzo6Y29udHJvbFNpegogICAgIHJldHVybiBOU01pbmlD
b250cm9sU2l6ZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cikKIHsKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50
SW5mby5jb250ZXh0KTsKICAgICB3a0RyYXdCZXplbGVkVGV4dEZpZWxkQ2VsbChyLCBpc0VuYWJs
ZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKTsKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lk
IFJlbmRlclRoZW1lTWFjOjphZGp1c3RUZXh0RmllbGRTdHlsCiB7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgaWYgKHBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtNzI4LDcgKzcyOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50Q2Fwc0xvY2tJ
bmRpY2EKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRU
ZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByKQogewogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENv
bnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwogICAgIHdrRHJhd0JlemVsZWRUZXh0QXJlYShyLCBp
c0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKTsKQEAgLTc2Nyw3ICs3NjcsNyBA
QCBjb25zdCBpbnQqIFJlbmRlclRoZW1lTWFjOjpwb3B1cEJ1dHRvblBhCiAgICAgcmV0dXJuIHBh
ZGRpbmdbc2l6ZV07CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQogewogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJ
bmZvLmNvbnRleHQpOwogICAgIHNldFBvcHVwQnV0dG9uQ2VsbFN0YXRlKG8sIHIpOwpAQCAtODIx
LDcgKzgyMSw3IEBAIEludFNpemUgUmVuZGVyVGhlbWVNYWM6Om1ldGVyU2l6ZUZvckJvdW4KICAg
ICAgICAgICAgICAgICAgICBib3VuZHMuaGVpZ2h0KCkgPCBjZWxsU2l6ZS5oZWlnaHQgPyBjZWxs
U2l6ZS5oZWlnaHQgOiBib3VuZHMuaGVpZ2h0KCkpOwogfQogCi1ib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludE1ldGVyKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZXRlcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFy
ZW5kZXJPYmplY3QtPmlzTWV0ZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MzAsNyAr
OTMwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0UHJvZ3Jlc3NCYXJTdAogewogfQog
Ci1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFyZW5kZXJPYmplY3QtPmlzUHJvZ3Jlc3Mo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCBzdGF0aWMgdm9p
ZCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUodm9pCiAgICAgICAgIG91dERhdGFbaV0gPSAoMS4w
ZiAtIGEpICogZGFya1tpXSArIGEgKiBsaWdodFtpXTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCit2b2lk
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAg
ICAgaWYgKHIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMDg3LDcgKzEwODcsNyBA
QCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uCiAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51
TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgSW50UmVjdCBib3VuZHMgPSBJbnRSZWN0KHIu
eCgpICsgby0+c3R5bGUoKS0+Ym9yZGVyTGVmdFdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHIueSgpICsgby0+c3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKSwKQEAgLTEyNzAs
NyArMTI3MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFNsaWRlclRyYWNrU3QKICAg
ICBzdHlsZS0+c2V0Qm94U2hhZG93KDApOwogfQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBJbnRSZWN0IGJvdW5kcyA9IHI7CiAgICAgZmxv
YXQgem9vbUxldmVsID0gby0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwpAQCAtMTMxNiw3ICsx
MzE2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2xpZGVyVGh1bWJTdAogCiBjb25z
dCBmbG9hdCB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgPSAwLjFmOwogCi1ib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBBU1NFUlQoby0+cGFy
ZW50KCktPmlzU2xpZGVyKCkpOwogCkBAIC0xMzc3LDcgKzEzNzcsNyBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludFNsaWRlclRodW1iKFJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBOU1NlYXJj
aEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAgICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CkBAIC0xNDc0LDcg
KzE0NzQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZFN0CiAgICAg
c3R5bGUtPnNldEJveFNoYWRvdygwKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgTm9kZSog
aW5wdXQgPSBvLT5ub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIGlmICghaW5wdXQt
PnJlbmRlcmVyKCktPmlzQm94KCkpCkBAIC0xNTM5LDcgKzE1MzksNyBAQCB2b2lkIFJlbmRlclRo
ZW1lTWFjOjphZGp1c3RTZWFyY2hGaWVsZERlCiAgICAgc3R5bGUtPnNldEJveFNoYWRvdygwKTsK
IH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
JikKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTE1NTIsNyArMTU1Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFk
anVzdFNlYXJjaEZpZWxkUmUKICAgICBzdHlsZS0+c2V0Qm94U2hhZG93KDApOwogfQogCi1ib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24oUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
IHIpCitib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiByKQog
ewogICAgIE5vZGUqIGlucHV0ID0gby0+bm9kZSgpLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAg
ICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQpAQCAtMTU4NCw3ICsxNTg0LDcgQEAg
dm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0U2VhcmNoRmllbGRSZQogICAgIHN0eWxlLT5zZXRC
b3hTaGFkb3coMCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgTm9kZSogaW5wdXQgPSBv
LT5ub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwogICAgIGlmICghaW5wdXQtPnJlbmRlcmVy
KCktPmlzQm94KCkpCkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0TWVk
aWFVSVBhcnRTdGF0ZUZsYWdzCiB9CiAKIC8vIFV0aWxpdHkgdG8gc2NhbGUgd2hlbiB0aGUgVUkg
cGFydCBhcmUgbm90IHNjYWxlZCBieSB3a0RyYXdNZWRpYVVJUGFydAotc3RhdGljIEZsb2F0UmVj
dCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qg
Jm9yaWdpbmFsUmVjdCkKK3N0YXRpYyBGbG9hdFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0
Q3VycmVudENvbnRleHQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCAmb3JpZ2luYWxSZWN0KQogewogICAgIGZsb2F0IHpvb21MZXZlbCA9
IG8tPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKICAgICBGbG9hdFJlY3QgdW56b29tZWRSZWN0
KG9yaWdpbmFsUmVjdCk7CkBAIC0xNzI3LDcgKzE3MjcsNyBAQCBzdGF0aWMgRmxvYXRSZWN0IGdl
dFVuem9vbWVkUmVjdEFuZEFkanVzCiB9CiAKIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBOb2RlKiBub2Rl
ID0gby0+bm9kZSgpOwogICAgIGlmICghbm9kZSkKQEAgLTE3MzgsNyArMTczOCw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFGdWxsc2NyZWUKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
CiB7CiAgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKICAgICBOb2RlKiBtZWRpYU5vZGUgPSBu
b2RlID8gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAwOwpAQCAtMTc1Myw3ICsxNzUzLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYU11dGVCdXR0bwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVBsYXlCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKIHsKICAgICBOb2RlKiBub2RlID0gby0+bm9kZSgpOwogICAgIE5vZGUqIG1lZGlh
Tm9kZSA9IG5vZGUgPyBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKSA6IDA7CkBAIC0xNzY3LDcg
KzE3NjcsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhUGxheUJ1dHRvCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2Vla0Jh
Y2tCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsK
ICAgICBpZiAoIW5vZGUpCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludE1lZGlhU2Vla0JhY2tCCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
CiB7CiAgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCkBAIC0xNzg5
LDcgKzE3ODksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2Vla0ZvcndhCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lZGlhU2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKICAg
ICBOb2RlKiBtZWRpYU5vZGUgPSBub2RlID8gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAw
OwpAQCAtMTgxNyw3ICsxODE3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVNs
aWRlclRyYQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFp
bnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIE5vZGUqIG5vZGUgPSBvLT5u
b2RlKCk7CiAgICAgaWYgKCFub2RlKQpAQCAtMTgyOCw3ICsxODI4LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRNZWRpYVNsaWRlclRodQogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAK
LWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQogewogICAgIE5vZGUqIG5vZGUgPSBvLT5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQpAQCAtMTgz
OSw3ICsxODM5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVJld2luZEJ1dAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVJl
dHVyblRvUmVhbHRpbWVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRNZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBOb2Rl
KiBub2RlID0gby0+bm9kZSgpOwogICAgIGlmICghbm9kZSkKQEAgLTE4NTAsNyArMTg1MCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFSZXR1cm5Ub1IKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBIVE1MSW5wdXRF
bGVtZW50KiBub2RlID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG8tPm5vZGUoKSk7
CiAgICAgaWYgKCFub2RlKQpAQCAtMTg2Niw3ICsxODY2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRNZWRpYVRvZ2dsZUNsbwogICAgIHJldHVybiBmYWxzZTsKIH0KICAKLWJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVkaWFDb250cm9sc0JhY2tncm91bmQoUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByKQorYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYUNvbnRyb2xzQmFja2dyb3VuZChS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByKQogewogICAgIE5vZGUqIG5vZGUgPSBvLT5ub2RlKCk7CiAgICAgaWYgKCFub2RlKQpAQCAt
MTg3Nyw3ICsxODc3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYUNvbnRyb2xz
QgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRp
YUN1cnJlbnRUaW1lKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50TWVkaWFDdXJyZW50VGltZShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIE5vZGUqIG5vZGUgPSBvLT5ub2RlKCk7
CiAgICAgaWYgKCFub2RlKQpAQCAtMTg5MCw3ICsxODkwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRNZWRpYUN1cnJlbnRUaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVRpbWVSZW1haW5pbmcoUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQor
Ym9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZWRpYVRpbWVSZW1haW5pbmcoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAg
ICBOb2RlKiBub2RlID0gby0+bm9kZSgpOwogICAgIGlmICghbm9kZSkKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDks
NyArNDA5LDcgQEAgTlNDb250cm9sU2l6ZSBSZW5kZXJUaGVtZVNhZmFyaTo6Y29udHJvbAogICAg
IHJldHVybiBOU01pbmlDb250cm9sU2l6ZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lU2FmYXJp
OjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgp
KTsKIApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnNldENoZWNr
Ym94U2l6ZSgKICAgICBzZXRTaXplRnJvbUZvbnQoc3R5bGUsIGNoZWNrYm94U2l6ZXMoKSk7CiB9
CiAKLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIEFTU0VS
VChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjpzZXRCdXR0b25TaXplKFJlCiAgICAgc2V0U2l6ZUZyb21Gb250KHN0eWxl
LCBidXR0b25TaXplcygpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCkBAIC02MDUs
NyArNjA1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oUmVuZAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0Rmll
bGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0
RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCkBAIC02
MTcsNyArNjE3LDcgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6YWRqdXN0VGV4dEZpZWxkUwog
ewogfQogCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludENhcHNMb2NrSW5kaWNhdG9yKFJl
bmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJ
bmRpY2F0b3IoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcikKIHsgICAgCiAjaWYgZGVmaW5lZChTQUZBUklfVEhFTUVfVkVSU0lPTikg
JiYgU0FGQVJJX1RIRU1FX1ZFUlNJT04gPj0gMQogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJh
cnkoKSk7CkBAIC02MzMsNyArNjMzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRD
YXBzTG9ja0luZAogI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4
dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRU
ZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByKQogewogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKQEAg
LTY3Myw3ICs2NzMsNyBAQCBjb25zdCBpbnQqIFJlbmRlclRoZW1lU2FmYXJpOjpwb3B1cEJ1dHRv
CiAgICAgcmV0dXJuIHBhZGRpbmdbc2l6ZV07CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6
OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKIApAQCAt
NzQyLDcgKzc0Miw3IEBAIHN0YXRpYyB2b2lkIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSh2b2kK
ICAgICAgICAgb3V0RGF0YVtpXSA9ICgxLjBmIC0gYSkgKiBkYXJrW2ldICsgYSAqIGxpZ2h0W2ld
OwogfQogCi12b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcikKK3ZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVu
dUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBpZiAoci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludE1lbnVMaXN0QnV0CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAot
Ym9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCitib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
CiB7CiAgICAgSW50UmVjdCBib3VuZHMgPSBJbnRSZWN0KHIueCgpICsgby0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdFdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIueSgpICsgby0+
c3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKSwKQEAgLTk1NSw3ICs5NTUsNyBAQCBpbnQgUmVuZGVy
VGhlbWVTYWZhcmk6Om1pbmltdW1NZW51TGlzdFNpCiBjb25zdCBpbnQgdHJhY2tXaWR0aCA9IDU7
CiBjb25zdCBpbnQgdHJhY2tSYWRpdXMgPSAyOwogCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBJbnRSZWN0IGJvdW5kcyA9IHI7CiAK
QEAgLTk5OCw3ICs5OTgsNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTbGlkZXJU
aHVtCiAKIGNvbnN0IGZsb2F0IHZlcnRpY2FsU2xpZGVySGVpZ2h0UGFkZGluZyA9IDAuMWY7CiAK
LWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByKQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewog
ICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKQEAgLTEwMjksNyArMTAyOSw3IEBA
IHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFkanVzdFNsaWRlclRodW0KICNlbmRpZgogfQogCi1i
b29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAg
ICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCkBAIC0xMDgyLDcgKzEwODIsNyBAQCB2
b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsCiAgICAgc2V0Rm9udEZyb21D
b250cm9sU2l6ZShzZWxlY3Rvciwgc3R5bGUsIGNvbnRyb2xTaXplKTsKIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmKQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCkBAIC0xMTI0LDcg
KzExMjQsNyBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsCiAgICAg
c3R5bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikKK2Jv
b2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KQEAgLTExMzYsNyArMTEzNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OmFk
anVzdFNlYXJjaEZpZWwKICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgp
LCBGaXhlZCkpOwogfQogCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JikKIHsKICAgICBBU1NFUlQo
U2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCkBAIC0xMTU5LDcgKzExNTksNyBAQCB2b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjphZGp1c3RTZWFyY2hGaWVsCiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5n
dGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JikKK2Jvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmKQogewogICAg
IEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKQEAgLTExNzQsMzcgKzExNzQsMzcgQEAg
Ym9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZAogICAgIHJldHVybiBmYWxz
ZTsKIH0KICNpZiBFTkFCTEUoVklERU8pCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1l
ZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1l
U2FmYXJpOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIHJldHVybiBS
ZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhRnVsbHNjcmVl
bkJ1dHRvbiwgbywgcGFpbnRJbmZvLCByKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gUmVuZGVy
TWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYU11dGVCdXR0b24sIG8s
IHBhaW50SW5mbywgcik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVkaWFQ
bGF5QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJv
bHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFQbGF5QnV0dG9uLCBvLCBwYWludEluZm8s
IHIpOwogfQogCi1ib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lZGlhU2Vla0JhY2tCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZWRp
YVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6
OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFTZWVrQmFja0J1dHRvbiwgbywgcGFpbnRJbmZv
LCByKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZWRpYVNlZWtGb3J3YXJk
QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIHJldHVybiBSZW5kZXJNZWRpYUNv
bnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhU2Vla0ZvcndhcmRCdXR0b24sIG8s
IHBhaW50SW5mbywgcik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVkaWFT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250
cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVNsaWRlciwgbywgcGFpbnRJbmZvLCBy
KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJl
bmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVkaWFTbGlk
ZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByKQogewogICAgIHJldHVybiBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1l
ZGlhQ29udHJvbHNQYXJ0KE1lZGlhU2xpZGVyVGh1bWIsIG8sIHBhaW50SW5mbywgcik7CiB9Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmgJKHJldmlzaW9uIDYyMDk5KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAkod29ya2luZyBjb3B5KQpA
QCAtODYsNTYgKzg2LDU2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIC8vIE1ldGhvZHMg
Zm9yIGVhY2ggYXBwZWFyYW5jZSB2YWx1ZS4KLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2Jv
eChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldENo
ZWNrYm94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHBhaW50
UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRS
YWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RC
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBXZWJDb3JlOjpFbGVt
ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJ1dHRvblNpemUoUmVuZGVyU3R5
bGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxl
Y3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29s
IHBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5
bGUqLCBFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAg
dmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0
aW9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFk
anVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVt
ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgCi0g
ICAgdmlydHVhbCBib29sIHBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCBib29sIHBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFN
dXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vla0JhY2tCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlC
dXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVk
aWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCBib29sIHBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlk
ZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IEludFNpemUqIHBvcHVwQnV0dG9uU2l6ZXMoKSBjb25zdDsKICAgICBjb25zdCBpbnQqIHBv
cHVwQnV0dG9uTWFyZ2lucyhOU0NvbnRyb2xTaXplKSBjb25zdDsKICAgICBjb25zdCBpbnQqIHBv
cHVwQnV0dG9uUGFkZGluZyhOU0NvbnRyb2xTaXplKSBjb25zdDsKLSAgICB2b2lkIHBhaW50TWVu
dUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludE1lbnVMaXN0QnV0dG9u
R3JhZGllbnRzKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKICAgICBjb25zdCBJbnRTaXplKiBtZW51TGlzdFNpemVzKCkgY29uc3Q7CiAKICAgICBjb25z
dCBJbnRTaXplKiBzZWFyY2hGaWVsZFNpemVzKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uY3BwCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjExLDcgKzYxMSw3IEBAIHN0
YXRpYyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCoKICAgICBjb250ZXh0LT5yZWxl
YXNlV2luZG93c0NvbnRleHQoaGRjLCByLCBhbHBoYUJsZW5kKTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZVdpbjo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW46OnBh
aW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByKQogeyAgCiAgICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywgYnV0dG9uVGhlbWUo
KSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzMsMTMgKzYz
MywxMyBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjpzZXRDaGVja2JveFNpemUoUmVuCiAgICAgICAg
IHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKDEzLCBGaXhlZCkpOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lV2luOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywgdGV4dEZpZWxk
VGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVy
VGhlbWVXaW46OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8m
IGksIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgSEFORExFIHRoZW1lOwogICAgIGludCBwYXJ0
OwpAQCAtNjk0LDcgKzY5NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdE1lbnVMaXN0
QnV0dG8KICAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUpOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lV2luOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1l
V2luOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIC8vIEZJWE1FOiBEb24ndCBtYWtlIGhhcmRj
b2RlZCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgdGhpY2tuZXNzIG9mIHRoZSB0ZXh0ZmllbGQgYm9y
ZGVyLgogICAgIGludCBib3JkZXJUaGlja25lc3MgPSBoYXZlVGhlbWUgPyAxIDogMjsKQEAgLTcy
MSw3ICs3MjEsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0dG9uCiAK
IGNvbnN0IGludCB0cmFja1dpZHRoID0gNDsKIAotYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTbGlkZXJU
cmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYg
cikKIHsKICAgICBJbnRSZWN0IGJvdW5kcyA9IHI7CiAgICAgCkBAIC03MzcsNyArNzM3LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTbGlkZXJUcmFjayhSZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKIHsgICAKICAgICBkcmF3Q29u
dHJvbChpLmNvbnRleHQsICBvLCBzbGlkZXJUaGVtZSgpLCBnZXRUaGVtZURhdGEobyksIHIpOwog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTc4MSw3ICs3ODEsNyBAQCBpbnQgUmVuZGVyVGhlbWVXaW46
OmJ1dHRvbkludGVybmFsUGFkZGluCiAgICAgcmV0dXJuIDE7CiB9CiAKLWJvb2wgUmVuZGVyVGhl
bWVXaW46OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50U2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOwog
fQpAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZp
ZWxkU3QKICAgICAgICAgc3R5bGUtPnNldE91dGxpbmVPZmZzZXQoLTIpOwogfQogCi1ib29sIFJl
bmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24o
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcikKIHsKICAgICBJbnRSZWN0IGJvdW5kcyA9IHI7CiAgICAgQVNTRVJUKG8tPnBhcmVudCgp
KTsKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RTZWFyY2hG
aWVsZFJlCiAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgobWFnbmlmaWVyU2l6ZSwgRml4ZWQp
KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIEludFJlY3QgYm91bmRzID0g
cjsKICAgICBBU1NFUlQoby0+cGFyZW50KCkpOwpAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWVXaW46OmFkanVzdFNlYXJjaEZpZWxkUmUKICAgICBzdHlsZS0+c2V0SGVpZ2h0KExl
bmd0aChtYWduaWZpZXJIZWlnaHQsIEZpeGVkKSk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wg
UmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAg
ICAgSW50UmVjdCBib3VuZHMgPSByOwogICAgIEFTU0VSVChvLT5wYXJlbnQoKSk7CkBAIC05NzIs
NDIgKzk3Miw0MiBAQCBib29sIFJlbmRlclRoZW1lV2luOjpzaG91bGRSZW5kZXJNZWRpYUNvCiB9
CiAKIAotYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYUZ1bGxzY3Jl
ZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRN
ZWRpYUNvbnRyb2xzUGFydChNZWRpYUZ1bGxzY3JlZW5CdXR0b24sIG8sIHBhaW50SW5mbywgcik7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9i
amVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJvbHM6OnBhaW50TWVkaWFDb250cm9s
c1BhcnQoTWVkaWFNdXRlQnV0dG9uLCBvLCBwYWludEluZm8sIHIpOwogfQogCi1ib29sIFJlbmRl
clRoZW1lV2luOjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29s
IFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIHJldHVy
biBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhUGxheUJ1
dHRvbiwgbywgcGFpbnRJbmZvLCByKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRN
ZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVX
aW46OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIHJldHVybiBSZW5kZXJN
ZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhU2Vla0JhY2tCdXR0b24s
IG8sIHBhaW50SW5mbywgcik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFT
ZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lV2lu
OjpwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICByZXR1cm4gUmVuZGVy
TWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYVNlZWtGb3J3YXJkQnV0
dG9uLCBvLCBwYWludEluZm8sIHIpOwogfQogCi1ib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1l
ZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29u
dHJvbHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFTbGlkZXIsIG8sIHBhaW50SW5mbywg
cik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhU2xpZGVyVGh1
bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKIHsKICAgICByZXR1cm4gUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNv
bnRyb2xzUGFydChNZWRpYVNsaWRlclRodW1iLCBvLCBwYWludEluZm8sIHIpOwogfQogCi1ib29s
IFJlbmRlclRoZW1lV2luOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZWRpYVRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlhQ29udHJv
bHM6OnBhaW50TWVkaWFDb250cm9sc1BhcnQoTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24s
IG8sIHBhaW50SW5mbywgcik7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgJ
KHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsMzAgKzY2LDMwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsKICAgICB2
aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCisgICAgdmlydHVhbCBib29sIHBh
aW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IElu
dFJlY3QmIHIpCiAgICAgeyByZXR1cm4gcGFpbnRCdXR0b24obywgaSwgcik7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorICAgIHZpcnR1YWwgYm9vbCBwYWludFJh
ZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
KQogICAgIHsgcmV0dXJuIHBhaW50QnV0dG9uKG8sIGksIHIpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgeyByZXR1cm4gc2V0
Q2hlY2tib3hTaXplKHN0eWxlKTsgfQogCi0gICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0
RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCisgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEFy
ZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIp
CiAgICAgeyByZXR1cm4gcGFpbnRUZXh0RmllbGQobywgaSwgcik7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RNZW51TGlzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9v
bCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVM
aXN0QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpOwotICAg
IHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihS
ZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcik7CiAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBwb3B1cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTEwMCwxOSArMTAwLDE5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBidXR0b25JbnRlcm5hbFBhZGRpbmdCb3R0b20oKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwg
UmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNo
RmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlv
blN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVj
b3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBi
b29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5n
ZWQoKTsKIApAQCAtMTI2LDE0ICsxMjYsMTQgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXJNZWRpYUNvbnRyb2xQYXJ0KENvbnRyb2xQ
YXJ0LCBFbGVtZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJP
YmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVh
bCBib29sIHBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTbGlk
ZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhRnVsbHNjcmVl
bkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbmNlLmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4
LDcgKzE4OCw3IEBAIFRoZW1lRGF0YSBSZW5kZXJUaGVtZVdpbmNlOjpnZXRUaGVtZURhdGEKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFJlbmRlclRoZW1lV2luY2U6OnBhaW50QnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lV2luY2U6OnBhaW50QnV0dG9uKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIC8v
IEdldCB0aGUgY29ycmVjdCB0aGVtZSBkYXRhIGZvciBhIGJ1dHRvbgogICAgIFRoZW1lRGF0YSB0
aGVtZURhdGEgPSBnZXRUaGVtZURhdGEobyk7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZVdpbmNlOjpzZXRDaGVja2JveFNpemUoUgogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0
KExlbmd0aCgxMywgRml4ZWQpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludFRl
eHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludFRleHRGaWVs
ZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikK
IHsKICAgICAvLyBHZXQgdGhlIGNvcnJlY3QgdGhlbWUgZGF0YSBmb3IgYSB0ZXh0ZmllbGQKICAg
ICBUaGVtZURhdGEgdGhlbWVEYXRhID0gZ2V0VGhlbWVEYXRhKG8pOwpAQCAtMjQwLDE0ICsyNDAs
MTQgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbmNlOjphZGp1c3RNZW51TGlzdFN0eQogICAgIGFkanVz
dE1lbnVMaXN0QnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZVdpbmNlOjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1l
V2luY2U6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGks
IGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgcGFpbnRUZXh0RmllbGQobywgaSwgcik7CiAgICAg
cGFpbnRNZW51TGlzdEJ1dHRvbihvLCBpLCByKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCitib29s
IFJlbmRlclRoZW1lV2luY2U6OnBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgSW50UmVjdCBidXR0
b25SZWN0KHIucmlnaHQoKSAtIGRyb3BEb3duQnV0dG9uV2lkdGggLSAxLCByLnkoKSwgZHJvcERv
d25CdXR0b25XaWR0aCwgci5oZWlnaHQoKSk7CiAgICAgYnV0dG9uUmVjdC5pbmZsYXRlWSgtMSk7
CkBAIC0zNjIsMTIgKzM2MiwxMiBAQCB2b2lkIFJlbmRlclRoZW1lV2luY2U6OmFkanVzdFNlYXJj
aEZpZWxkCiB9CiAjZW5kaWYKIAotYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludFNlYXJjaEZp
ZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lV2luY2U6OnBhaW50U2VhcmNoRmllbGQo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiB7
CiAgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lV2luY2U6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJl
bmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgQ29sb3IgYnV0dG9uQ29sb3IgPSAoby0+bm9kZSgpICYmIG8tPm5vZGUoKS0+
YWN0aXZlKCkpID8gQ29sb3IoMTM4LCAxMzgsIDEzOCkgOiBDb2xvcigxODYsIDE4NiwgMTg2KTsK
IApAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW5jZTo6YWRqdXN0U2VhcmNo
RmllbGQKICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChtYWduaWZpZXJTaXplLmhlaWdodCgp
LCBGaXhlZCkpOwogfQogCi1ib29sIFJlbmRlclRoZW1lV2luY2U6OnBhaW50U2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lV2lu
Y2U6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVXaW5jZTo6YWRqdXN0U2VhcmNoRmllbGQKICAgICBzdHlsZS0+c2V0SGVpZ2h0
KExlbmd0aChtYWduaWZpZXJTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogfQogCi1ib29sIFJlbmRl
clRoZW1lV2luY2U6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKIHsKICAgICBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24obywgcGFp
bnRJbmZvLCByKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODUsNyArNDg1LDcgQEAgc3RhdGlj
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudFBhcgogfQogI2VuZGlmCiAKLWJvb2wgUmVu
ZGVyVGhlbWVXaW5jZTo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJU
aGVtZVdpbmNlOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIGJvb2wgcmMgPSBSZW5kZXJUaGVtZTo6
cGFpbnRTbGlkZXJUcmFjayhvLCBpLCByKTsKICAgICBJbnRQb2ludCBsZWZ0ID0gSW50UG9pbnQo
ci54KCkgKyAyLCAoci55KCkgKyByLmJvdHRvbSgpKSAvIDIpOwpAQCAtNTA4LDcgKzUwOCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRTbGlkZXJUcmFjaygKICAgICByZXR1cm4gcmM7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
KQorYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIGJvb2wgcmMg
PSBSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaHVtYihvLCBpLCByKTsKICAgICBpLmNvbnRleHQt
PnNhdmUoKTsKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlbmRlclRoZW1lV2luY2U6OmFkanVz
dFNlYXJjaEZpZWxkCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLWJvb2wgUmVuZGVyVGhlbWVXaW5j
ZTo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBS
ZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAg
IGJvb2wgcmMgPSBwYWludEJ1dHRvbihvLCBwYWludEluZm8sIHIpOwogICAgIEZsb2F0UmVjdCBp
bVJlY3QgPSByOwpAQCAtNTcyLDcgKzU3Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFp
bnRNZWRpYUZ1bGxzY3IKICAgICByZXR1cm4gcmM7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW5j
ZTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJU
aGVtZVdpbmNlOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIGJvb2wgcmMgPSBw
YWludEJ1dHRvbihvLCBwYWludEluZm8sIHIpOwogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCA9IG1lZGlhRWxlbWVudFBhcmVudChvLT5ub2RlKCkpOwpAQCAtNTk3LDcgKzU5Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYU11dGVCdXQKICAgICByZXR1cm4g
cmM7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhUGxheUJ1
dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQogewogICAgIGJvb2wgcmMgPSBwYWludEJ1dHRvbihvLCBwYWludEluZm8sIHIp
OwogICAgIEZsb2F0UmVjdCBpbVJlY3QgPSByOwpAQCAtNjIxLDcgKzYyMSw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVBsYXlCdXQKICAgICByZXR1cm4gcmM7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVj
dCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCiB7CiAgICAgYm9vbCByYyA9IHBhaW50QnV0dG9uKG8sIHBhaW50SW5mbywgcik7CiAg
ICAgRmxvYXRSZWN0IGltUmVjdCA9IHI7CkBAIC02MzcsNyArNjM3LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVdpbmNlOjpwYWludE1lZGlhU2Vla0JhYwogICAgIHJldHVybiByYzsKIH0KIAotYm9vbCBS
ZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50
UmVjdCYgcikKIHsKICAgICBib29sIHJjID0gcGFpbnRCdXR0b24obywgcGFpbnRJbmZvLCByKTsK
ICAgICBGbG9hdFJlY3QgaW1SZWN0ID0gcjsKQEAgLTY1MywxMiArNjUzLDEyIEBAIGJvb2wgUmVu
ZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVNlZWtGb3IKICAgICByZXR1cm4gcmM7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVXaW5jZTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRl
ck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIp
CiB7CiAgICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2sobywgcGFpbnRJbmZvLCByKTsKIH0KIAot
Ym9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZVdpbmNlOjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cikKIHsKICAgICByZXR1cm4gcGFpbnRTbGlkZXJUaHVtYihvLCBwYWludEluZm8sIHIpOwogfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luY2UuaAkocmV2aXNpb24gNjIwOTkpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDMwICs2NSwzMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzeXN0ZW1Gb250KGludCBwcm9wSWQsIEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdDsKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQorICAgICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
aSwgY29uc3QgSW50UmVjdCYgcikKICAgICAgICAgeyByZXR1cm4gcGFpbnRCdXR0b24obywgaSwg
cik7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSop
IGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCisg
ICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogICAgICAgICB7IHJldHVybiBwYWludEJ1dHRv
bihvLCBpLCByKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gc2V0Q2hlY2tib3hTaXplKHN0eWxl
KTsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAg
dmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0RmllbGQo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmlydHVhbCBi
b29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50
VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJl
Y3QmIHIpCiAgICAgICAgIHsgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOyB9CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3Q7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUp
IGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmlydHVhbCBi
b29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBw
YWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKSBjb25zdDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgcG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC05OSwxOSArOTksMTkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGludCBidXR0b25JbnRlcm5hbFBhZGRpbmdCb3R0b20oKSBj
b25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShDU1NT
dHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0OwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihS
ZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3Q7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihSZW5kZXJP
YmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7CiAKQEAgLTEyNCwxMyArMTI0LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXNSaW5nKGNv
bnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICAjaWYgRU5BQkxFKFZJREVPKQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVh
bCBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRp
YVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxz
Y3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtC
YWNrQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRp
YVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKICAgICAjZW5kaWYKIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDkgKzExNSw5IEBAIGludCBSb290
SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50RWxsaXBzaXNCb3goUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpIGNvbnN0Cit2b2lkIFJvb3RJbmxpbmVC
b3g6OnBhaW50RWxsaXBzaXNCb3goUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5
KSBjb25zdAogewotICAgIGlmIChoYXNFbGxpcHNpc0JveCgpICYmIHJlbmRlcmVyKCktPnNob3Vs
ZFBhaW50V2l0aGluUm9vdChwYWludEluZm8pICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFCisgICAgaWYgKGhhc0VsbGlwc2lzQm94KCkgJiYgcGFpbnRJbmZv
LnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSAmJiByZW5kZXJlcigpLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRQogICAgICAgICAgICAgJiYgcGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQogICAgICAgICBlbGxpcHNpc0JveCgpLT5wYWludChw
YWludEluZm8sIHR4LCB0eSk7CiB9CkBAIC0xNDAsOSArMTQwLDkgQEAgdm9pZCBSb290SW5saW5l
Qm94OjphZGRIaWdobGlnaHRPdmVyZmxvdwogICAgIHNldFZlcnRpY2FsT3ZlcmZsb3dQb3NpdGlv
bnModG9wTGF5b3V0T3ZlcmZsb3coKSwgYm90dG9tTGF5b3V0T3ZlcmZsb3coKSwgbWluKHRvcFZp
c3VhbE92ZXJmbG93KCksIGluZmxhdGVkUmVjdC55KCkpLCBtYXgoYm90dG9tVmlzdWFsT3ZlcmZs
b3coKSwgaW5mbGF0ZWRSZWN0LmJvdHRvbSgpKSwgaGVpZ2h0KCkpOwogfQogCi12b2lkIFJvb3RJ
bmxpbmVCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBw
YWludEluZm8sIGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdodFR5
cGUpCit2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgY29uc3QgQXRvbWljU3RyaW5nJiBoaWdobGlnaHRU
eXBlKQogewotICAgIGlmICghcmVuZGVyZXIoKS0+c2hvdWxkUGFpbnRXaXRoaW5Sb290KHBhaW50
SW5mbykgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQorICAgIGlmICghcGFpbnRJ
bmZvLnNob3VsZFBhaW50V2l0aGluUm9vdChyZW5kZXJlcigpKSB8fCByZW5kZXJlcigpLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHJl
bmRlcmVyKCktPmZyYW1lKCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSb290SW5saW5lQm94
OjpwYWludEN1c3RvbUhpZ2hsaWdodAogCiAjZW5kaWYKIAotdm9pZCBSb290SW5saW5lQm94Ojpw
YWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkK
K3ZvaWQgUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwg
aW50IHR5KQogewogICAgIElubGluZUZsb3dCb3g6OnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsK
ICAgICBwYWludEVsbGlwc2lzQm94KHBhaW50SW5mbywgdHgsIHR5KTsKQEAgLTI0MCw3ICsyNDAs
NyBAQCBpbnQgUm9vdElubGluZUJveDo6dmVydGljYWxseUFsaWduQm94ZXMoCiB9CiAKIEdhcFJl
Y3RzIFJvb3RJbmxpbmVCb3g6OmZpbGxMaW5lU2VsZWN0aW9uR2FwKGludCBzZWxUb3AsIGludCBz
ZWxIZWlnaHQsIFJlbmRlckJsb2NrKiByb290QmxvY2ssIGludCBibG9ja1gsIGludCBibG9ja1ks
IGludCB0eCwgaW50IHR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8qIHBhaW50SW5mbykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhaW50SW5mbyogcGFp
bnRJbmZvKQogewogICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgbGluZVN0YXRlID0g
c2VsZWN0aW9uU3RhdGUoKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkocmV2
aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDE3ICs4NywxNyBAQCBwdWJsaWM6CiAKICAgICBFbGxpcHNpc0JveCog
ZWxsaXBzaXNCb3goKSBjb25zdDsKIAotICAgIHZvaWQgcGFpbnRFbGxpcHNpc0JveChSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KSBjb25zdDsKKyAgICB2b2lkIHBhaW50
RWxsaXBzaXNCb3goUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpIGNvbnN0OwogICAgIGJvb2wg
aGl0VGVzdEVsbGlwc2lzQm94KEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwg
aW50IHR5LCBIaXRUZXN0QWN0aW9uLCBib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRy
dW5jYXRpb24oKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGFkZEhpZ2hsaWdodE92
ZXJmbG93KCk7Ci0gICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYsIGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdodFR5
cGUpOworICAgIHZvaWQgcGFpbnRDdXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSk7CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkp
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBpbnQsIGludCwgaW50LCBpbnQpOwogCiAgICAgYm9vbCBoYXNTZWxlY3Rl
ZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTZWxlY3RlZENoaWxkcmVuOyB9CkBAIC0x
MDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIElubGluZUJveCogbGFzdFNlbGVjdGVkQm94KCk7
CiAKICAgICBHYXBSZWN0cyBmaWxsTGluZVNlbGVjdGlvbkdhcChpbnQgc2VsVG9wLCBpbnQgc2Vs
SGVpZ2h0LCBSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgYmxvY2tYLCBpbnQgYmxvY2tZLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eCwgaW50IHR5LCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB0eCwgaW50IHR5LCBjb25zdCBQYWludEluZm8qKTsKIAogICAgIFJlbmRlckJsb2Nr
KiBibG9jaygpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93Qm94
LmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVGbG93
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgU1ZHSW5saW5lRmxvd0JveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mIHBhaW50SW5mbywgaW50LCBpbnQpCit2b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKICAgICBBU1NFUlQocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlU2VsZWN0aW9uKTsKICAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpOwpAQCAtMzgsNyArMzgsNyBAQCB2b2lkIFNWR0lubGluZUZsb3dCb3g6OnBh
aW50KFJlbmRlck9iamVjCiAgICAgUmVuZGVyT2JqZWN0KiBib3hSZW5kZXJlciA9IHJlbmRlcmVy
KCk7CiAgICAgQVNTRVJUKGJveFJlbmRlcmVyKTsKIAotICAgIFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CisgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJ
bmZvKHBhaW50SW5mbyk7CiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogCiAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IDA7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdJbmxpbmVGbG93Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHSW5saW5lRmxvd0JveC5oCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR0lubGluZUZsb3dCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdmlydHVhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRIZWlnaHQoaW50IGgpIHsgbV9oZWlnaHQgPSBoOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBpbnQgdHgs
IGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKIAogICAgIHZpcnR1YWwgSW50UmVjdCBjYWxjdWxhdGVCb3VuZGFyaWVzKCkgY29uc3Q7
CiAgICAgdm9pZCBsYXlvdXRGbG93Qm94KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxp
bmVUZXh0Qm94LmNwcAkocmV2aXNpb24gNjIxMDApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDkgKzE5MCw5IEBAIEludFJl
Y3QgU1ZHSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdCgKICAgICByZXR1cm4gZW5jbG9zaW5n
SW50UmVjdChtX2NodW5rVHJhbnNmb3JtYXRpb24ubWFwUmVjdChzZWxlY3Rpb25SZWN0KSk7CiB9
CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
IHBhaW50SW5mbywgaW50LCBpbnQpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKLSAgICBBU1NFUlQocmVuZGVyZXIoKS0+c2hv
dWxkUGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykpOworICAgIEFTU0VSVChwYWludEluZm8uc2hv
dWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpKTsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlU2VsZWN0aW9uKTsKICAgICBBU1NFUlQodHJ1bmNhdGlvbigpID09IGNOb1RydW5jYXRpb24p
OwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5oCShyZXZpc2lvbiA2MjA5
OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgb2Zmc2V0Rm9yUG9z
aXRpb24oaW50IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGludCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkp
OwogICAgIHZpcnR1YWwgSW50UmVjdCBzZWxlY3Rpb25SZWN0KGludCBhYnN4LCBpbnQgYWJzeSwg
aW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25T
dGFydEVuZChpbnQmIHN0YXJ0UG9zLCBpbnQmIGVuZFBvcyk7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgs
NyArOTgsNyBAQCBGbG9hdFJlY3QgU1ZHTWFya2VyTGF5b3V0SW5mbzo6Y2FsY3VsYXRlCiAgICAg
cmV0dXJuIGJvdW5kczsKIH0KIAotdm9pZCBTVkdNYXJrZXJMYXlvdXRJbmZvOjpkcmF3TWFya2Vy
cyhSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvKQordm9pZCBTVkdNYXJrZXJMYXlv
dXRJbmZvOjpkcmF3TWFya2VycyhQYWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBpZiAobV9s
YXlvdXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHTWFya2VyTGF5b3V0SW5mby5oCShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR01hcmtlckxheW91dEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QCBwdWJsaWM6CiAgICAgflNWR01hcmtlckxheW91dEluZm8oKTsKIAogICAgIEZsb2F0UmVjdCBj
YWxjdWxhdGVCb3VuZGFyaWVzKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBzdGFydE1hcmtlciwg
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1pZE1hcmtlciwgUmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXIqIGVuZE1hcmtlciwgZmxvYXQgc3Ryb2tlV2lkdGgsIGNvbnN0IFBhdGgmKTsKLSAgICB2b2lk
IGRyYXdNYXJrZXJzKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJik7CisgICAgdm9pZCBkcmF3TWFy
a2VycyhQYWludEluZm8mKTsKIAogICAgIC8vIFVzZWQgYnkgc3RhdGljIGlubGluZSBoZWxwZXIg
ZnVuY3Rpb25zIGluIFNWR01hcmtlckxheW91dEluZm8uY3BwCiAgICAgU1ZHTWFya2VyRGF0YSYg
bWFya2VyRGF0YSgpIHsgcmV0dXJuIG1fbWFya2VyRGF0YTsgfQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBTVkdSZW5kZXJCYXNlOjptYXBMb2NhbFRvQ29udGFpbmVyKAogICAgIG9iamVjdC0+
cGFyZW50KCktPm1hcExvY2FsVG9Db250YWluZXIocmVwYWludENvbnRhaW5lciwgZml4ZWQsIHVz
ZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKIH0KIAotYm9vbCBTVkdSZW5kZXJCYXNlOjpw
cmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlciomIGZpbHRlcikKK2Jvb2wgU1ZHUmVuZGVyQmFzZTo6cHJl
cGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9iamVjdCwgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyKiYgZmlsdGVyKQogewogI2lmICFFTkFCTEUoRklMVEVSUykKICAgICBVTlVTRURfUEFS
QU0oZmlsdGVyKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFNWR1JlbmRlckJhc2U6OnByZXBh
cmVUb1JlbmRlclNWR0NvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyQmFz
ZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqJiBmaWx0
ZXIsIEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0KQordm9pZCBTVkdSZW5kZXJCYXNlOjpm
aW5pc2hSZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBQYWludEluZm8mIHBh
aW50SW5mbywgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqJiBmaWx0ZXIsIEdyYXBoaWNzQ29udGV4
dCogc2F2ZWRDb250ZXh0KQogewogI2lmICFFTkFCTEUoRklMVEVSUykKICAgICBVTlVTRURfUEFS
QU0oZmlsdGVyKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIHJlbmRlclN1YnRyZWVUb0ltYWdl
KEltYWdlQnVmZmVyKiBpCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBpdGVtLT5kb2N1bWVu
dCgpLT52aWV3KCk7CiAgICAgaWYgKGZyYW1lVmlldykKICAgICAgICAgcmVjdCA9IEludFJlY3Qo
MCwgMCwgZnJhbWVWaWV3LT52aXNpYmxlV2lkdGgoKSwgZnJhbWVWaWV3LT52aXNpYmxlSGVpZ2h0
KCkpOwotICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8oaW1hZ2UtPmNvbnRleHQoKSwg
cmVjdCwgUGFpbnRQaGFzZUZvcmVncm91bmQsIDAsIDAsIDApOworICAgIFBhaW50SW5mbyBpbmZv
KGltYWdlLT5jb250ZXh0KCksIHJlY3QsIFBhaW50UGhhc2VGb3JlZ3JvdW5kLCAwLCAwLCAwKTsK
IAogICAgIC8vIEZJWE1FOiBpc1NWR0NvbnRhaW5lciByZXR1cm5zIHRydWUgZm9yIFJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyLCBzbyBpZiB0aGlzIGlzIGV2ZXIKICAgICAvLyBjYWxsZWQgd2l0
aCBvbmUgb2YgdGhvc2UsIHdlIHdpbGwgcmVhZCBmcm9tIHRoZSB3cm9uZyBvZmZzZXQgaW4gYW4g
b2JqZWN0IGR1ZSB0byBhIGJhZCBjYXN0LgpAQCAtMzc1LDE1ICszNzUsNiBAQCB2b2lkIGRlcmVn
aXN0ZXJGcm9tUmVzb3VyY2VzKFJlbmRlck9iamVjCiAgICAgICAgIGludmFsaWRhdGVQYWludGlu
Z1Jlc291cmNlKHN2Z1N0eWxlLT5zdHJva2VQYWludCgpLCBvYmplY3QpOwogfQogCi12b2lkIGFw
cGx5VHJhbnNmb3JtVG9QYWludEluZm8oUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0pCi17Ci0g
ICAgaWYgKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9y
VHJhbnNmb3JtKTsKLSAgICBwYWludEluZm8ucmVjdCA9IGxvY2FsVG9BbmNlc3RvclRyYW5zZm9y
bS5pbnZlcnNlKCkubWFwUmVjdChwYWludEluZm8ucmVjdCk7Ci19Ci0KIERhc2hBcnJheSBkYXNo
QXJyYXlGcm9tUmVuZGVyaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlKQogewogICAgIERhc2hBcnJheSBhcnJheTsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9TVkdSZW5kZXJTdXBwb3J0LmgJKHJldmlzaW9uIDYyMDk5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG9ubHkgcHVibGljIGZvciBTVkdSb290
SW5saW5lQm94LgogICAgIC8vIEl0J3MgdW5jbGVhciBpZiB0aGVzZSBzaG91bGQgYmUgZXhwb3Nl
ZCBvciBub3QuICBTVkdSb290SW5saW5lQm94IG1heQogICAgIC8vIHBhc3MgdGhlIHdyb25nIFJl
bmRlck9iamVjdCogYW5kIGJvdW5kaW5nQm94IHRvIHRoZXNlIGZ1bmN0aW9ucy4KLSAgICBzdGF0
aWMgYm9vbCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCosIFJlbmRlck9i
amVjdDo6UGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIqJik7Ci0gICAgc3RhdGljIHZvaWQgZmluaXNoUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyKiYsIEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0KTsKKyAgICBzdGF0aWMg
Ym9vbCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCosIFBhaW50SW5mbyYs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiYp
OworICAgIHN0YXRpYyB2b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0Kiwg
UGFpbnRJbmZvJiwgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqJiwgR3JhcGhpY3NDb250ZXh0KiBz
YXZlZENvbnRleHQpOwogCiAgICAgLy8gTGF5b3V0IGFsbCBjaGlsZHJlbiBvZiB0aGUgcGFzc2Vk
IHJlbmRlciBvYmplY3QKICAgICBzdGF0aWMgdm9pZCBsYXlvdXRDaGlsZHJlbihSZW5kZXJPYmpl
Y3QqLCBib29sIHNlbGZOZWVkc0xheW91dCk7CkBAIC02OSwxMCArNjksNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIEZsb2F0UmVjdCBjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3goY29uc3Qg
UmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGJvb2wgaW5jbHVkZUFsbFBhaW50ZWRDb250ZW50KTsK
IH07CiAKLS8vIEZJWE1FOiBUaGlzIHNob3VsZCBtb3ZlIHRvIFJlbmRlck9iamVjdCBvciBQYWlu
dEluZm8KLS8vIFVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgR3JhcGhpY3NDb250ZXh0IGFuZCBk
YW1hZ2UgcmVjdCBiZWZvcmUgcGFzc2luZyBQYWludEluZm8gdG8gY2hpbGQgcmVuZGVyZXJzLgot
dm9pZCBhcHBseVRyYW5zZm9ybVRvUGFpbnRJbmZvKFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvQ2hpbGRUcmFuc2Zvcm0pOwotCiAvLyBUaGlz
IG9mZmVycyBhIHdheSB0byByZW5kZXIgcGFydHMgb2YgYSBXZWJLaXQgcmVuZGVyaW5nIHRyZWUg
aW50byBhIEltYWdlQnVmZmVyLgogdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZShJbWFnZUJ1ZmZl
ciosIFJlbmRlck9iamVjdCopOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5s
aW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5l
Qm94LmNwcAkocmV2aXNpb24gNjIwOTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5s
aW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjpQ
YWludEluZm8mIHBhaW50SW5mbywgaW50LCBpbnQpCit2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKICAgICBBU1NFUlQocGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlU2VsZWN0aW9uKTsKICAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkpOwpAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6
OnBhaW50KFJlbmRlck9iamVjCiAgICAgUmVuZGVyT2JqZWN0KiBib3hSZW5kZXJlciA9IHJlbmRl
cmVyKCk7CiAgICAgQVNTRVJUKGJveFJlbmRlcmVyKTsKIAotICAgIFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CisgICAgUGFpbnRJbmZvIGNoaWxkUGFp
bnRJbmZvKHBhaW50SW5mbyk7CiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwog
CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gYm94UmVuZGVyZXItPnJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5l
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5o
CShyZXZpc2lvbiA2MjA5OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3gu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgdmlydHVhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgdm9pZCBz
ZXRIZWlnaHQoaW50IGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CiAKICAg
ICB2b2lkIGNvbXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwogCg==
</data>
<flag name="review"
          id="47228"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>