<?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>54031</bug_id>
          
          <creation_ts>2011-02-08 13:43:50 -0800</creation_ts>
          <short_desc>WK2: Add ability to pass context to policy delegate methods</short_desc>
          <delta_ts>2011-02-08 14:48:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>347646</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-08 13:43:50 -0800</bug_when>
    <thetext>WK2: Add ability to pass context to policy delegate methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347664</commentid>
    <comment_count>1</comment_count>
      <attachid>81689</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-08 14:10:18 -0800</bug_when>
    <thetext>Created attachment 81689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347666</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-08 14:11:50 -0800</bug_when>
    <thetext>Attachment 81689 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/UIProcess/WebPolicyClient.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 3 in 28 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>347696</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-08 14:41:09 -0800</bug_when>
    <thetext>Attachment 81689 did not build on win:
Build output: http://queues.webkit.org/results/7858004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347708</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-08 14:48:46 -0800</bug_when>
    <thetext>Landed in r77974.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81689</attachid>
            <date>2011-02-08 14:10:18 -0800</date>
            <delta_ts>2011-02-08 14:14:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54031-20110208141018.patch</filename>
            <type>text/plain</type>
            <size>82148</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTY3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODIgQEAKKzIwMTEtMDItMDggIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXSzI6IEFkZCBhYmlsaXR5IHRvIHBhc3MgY29udGV4dCB0byBwb2xpY3kg
ZGVsZWdhdGUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQwMzEKKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2Fn
ZS5oOgorICAgICAgICAoQ29yZUlQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKToKKyAgICAgICAgKENv
cmVJUEM6OmhhbmRsZU1lc3NhZ2VWYXJpYWRpYyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQy
L21lc3NhZ2VzLnB5OgorICAgICAgICBBZGQgYWJpbGl0eSB0byBwYXNzIHZhcmlhZGljIG1lc3Nh
Z2VzIHRvIHN5bmMgbWVzc2FnZXMuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICBBZGQgV0tCdW5kbGVOYXZp
Z2F0aW9uIHR5cGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBvbGljeUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9saWN5
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBvbGljeUNsaWVudC5oOgorICAgICAgICBVcGRhdGUgcG9saWN5IGNsaWVudCBmb3IgbmV3IGRh
dGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
QVBJQ2FzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb25HZXRUeXBlSUQpOgorICAgICAgICAoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
R2V0TmF2aWdhdGlvblR5cGUpOgorICAgICAgICAoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0
RXZlbnRNb2RpZmllcnMpOgorICAgICAgICAoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0RXZl
bnRNb3VzZUJ1dHRvbik6CisgICAgICAgIChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5Rm9ybUVs
ZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNl
dFBvbGljeUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
Ojptb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Om1vdXNl
QnV0dG9uRm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW91c2VCdXR0b25Gb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6
bmF2aWdhdGlvblR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246Om1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbjo6bW91c2VCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb246OmhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmZvcm1FbGVtZW50KToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjp0eXBlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1F
VHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQpOgorICAgICAgICBQaXBlIHRoZSBw
b2xpY3kgY2xpZW50IHRocm91Z2ggdGhlIGJ1bmRsZSB0byBhbGxvdyBzZXR0aW5nIHVzZXIgZGF0
YS4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgQWRkIG5ldyBkYXRhLgorCisKIDIwMTEtMDItMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lv
biA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2Fn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDI1IEBAIHZvaWQgY2FsbE1lbWJlckZ1
bmN0aW9uKGNvbnN0IEFyZ3VtZW50czYKICAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFyZ3MuYXJn
dW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJndW1lbnQ0LCBh
cmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3VtZW50RGVjb2Rlcik7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIs
IHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIFA2LCB0eXBl
bmFtZSBQNz4KK3ZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbnN0IEFyZ3VtZW50czc8UDEsIFAy
LCBQMywgUDQsIFA1LCBQNiwgUDc+JiBhcmdzLCBBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50RGVj
b2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24p
KGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJn
dW1lbnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1lbnQ3LCBh
cmd1bWVudERlY29kZXIpOworfQorCisvLyBWYXJpYWRpYyBkaXNwYXRjaCBmdW5jdGlvbnMgd2l0
aCBub24tdmFyaWFkaWMgcmVwbHkgYXJndW1lbnRzLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgUDQsIHR5cGVuYW1lIFIxLCB0eXBlbmFtZSBSMiwgdHlwZW5hbWUgUjM+Cit2b2lkIGNhbGxN
ZW1iZXJGdW5jdGlvbihjb25zdCBBcmd1bWVudHM0PFAxLCBQMiwgUDMsIFA0PiYgYXJncywgQXJn
dW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29kZXIsIEFyZ3VtZW50czM8UjEsIFIyLCBSMz4mIHJl
cGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rp
b24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3Mu
YXJndW1lbnQ0LCBhcmd1bWVudERlY29kZXIsIHJlcGx5QXJncy5hcmd1bWVudDEsIHJlcGx5QXJn
cy5hcmd1bWVudDIsIHJlcGx5QXJncy5hcmd1bWVudDMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUjEsIHR5cGVu
YW1lIFIyPgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzNjxQMSwgUDIs
IFAzLCBQNCwgUDUsIFA2PiYgYXJncywgQXJndW1lbnREZWNvZGVyKiBhcmd1bWVudERlY29kZXIs
IEFyZ3VtZW50czI8UjEsIFIyPiYgcmVwbHlBcmdzLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQor
eworICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFyZ3MuYXJndW1lbnQy
LCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJndW1lbnQ1LCBhcmdzLmFy
Z3VtZW50NiwgYXJndW1lbnREZWNvZGVyLCByZXBseUFyZ3MuYXJndW1lbnQxLCByZXBseUFyZ3Mu
YXJndW1lbnQyKTsKK30KIAogLy8gTWFpbiBkaXNwYXRjaCBmdW5jdGlvbnMKIApAQCAtMjQ4LDYg
KzI2NywxOSBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VWYXJpYWRpYyhBcmd1bWVudERlY29kCiAgICAg
Y2FsbE1lbWJlckZ1bmN0aW9uKGFyZ3VtZW50cywgYXJndW1lbnREZWNvZGVyLCBvYmplY3QsIGZ1
bmN0aW9uKTsKIH0KIAorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRj4KK3ZvaWQgaGFuZGxlTWVzc2FnZVZhcmlhZGljKEFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnREZWNvZGVyLCBBcmd1bWVudEVuY29kZXIqIHJlcGx5RW5jb2RlciwgQyogb2JqZWN0LCBNRiBm
dW5jdGlvbikKK3sKKyAgICB0eXBlbmFtZSBUOjpEZWNvZGVUeXBlOjpWYWx1ZVR5cGUgYXJndW1l
bnRzOworICAgIGlmICghYXJndW1lbnREZWNvZGVyLT5kZWNvZGUoYXJndW1lbnRzKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdHlwZW5hbWUgVDo6UmVwbHk6OlZhbHVlVHlwZSByZXBseUFyZ3Vt
ZW50czsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oYXJndW1lbnRzLCBhcmd1bWVudERlY29kZXIs
IHJlcGx5QXJndW1lbnRzLCBvYmplY3QsIGZ1bmN0aW9uKTsKKyAgICByZXBseUVuY29kZXItPmVu
Y29kZShyZXBseUFyZ3VtZW50cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKIAogI2Vu
ZGlmIC8vIEhhbmRsZU1lc3NhZ2VfaApJbmRleDogU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJr
aXQyL21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weQkocmV2aXNpb24gNzc5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3NSw5ICszNzUsMTMg
QEAgZGVmIGFzeW5jX2Nhc2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYQogCiAKIGRlZiBzeW5j
X2Nhc2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKToKKyAgICBkaXNwYXRjaF9mdW5jdGlv
biA9ICdoYW5kbGVNZXNzYWdlJworICAgIGlmIG1lc3NhZ2UuaXNfdmFyaWFkaWM6CisgICAgICAg
IGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdWYXJpYWRpYycKKwogICAgIHJlc3VsdCA9IFtdCiAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZXM6OiVzOjolczpcbicgJSAocmVjZWl2ZXIu
bmFtZSwgbWVzc2FnZS5pZCgpKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIENvcmVJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OiVzOjolcz4oYXJndW1lbnRzLCByZXBseSwgdGhpcywg
JiVzKTtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCBoYW5kbGVyX2Z1bmN0aW9u
KHJlY2VpdmVyLCBtZXNzYWdlKSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBDb3JlSVBD
OjolczxNZXNzYWdlczo6JXM6OiVzPihhcmd1bWVudHMsIHJlcGx5LCB0aGlzLCAmJXMpO1xuJyAl
IChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCBoYW5kbGVy
X2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAgICAgIyBGSVhNRTogSGFuZGxlIGRlbGF5
ZWQgcmVwbGllcwogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIENvcmVJUEM6OkF1
dG9tYXRpY1JlcGx5O1xuJykKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpv
aW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCShyZXZpc2lvbiA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5
cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAg
IFR5cGVCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIFR5cGVCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKICAgICAgICAgVHlwZUJ1bmRsZVBhZ2Us
CiAgICAgICAgIFR5cGVCdW5kbGVQYWdlR3JvdXAsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oCShyZXZpc2lvbiA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQsNiArOTQsNyBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZURPTUNTCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0J1bmRsZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0
b3JSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b24qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVOb2RlSGFuZGxlUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVQYWdlKiBXS0J1bmRsZVBhZ2VSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZVBhZ2VHcm91cCogV0tCdW5kbGVQYWdlR3JvdXBS
ZWY7CkBAIC0xMDEsOCArMTAyLDYgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5k
bGVQYWdlTwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVSYW5nZUhhbmRsZSog
V0tCdW5kbGVSYW5nZUhhbmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVu
ZGxlU2NyaXB0V29ybGQqIFdLQnVuZGxlU2NyaXB0V29ybGRSZWY7CiAKLS8qIFRoZXNlIHJ1bGVz
IHNob3VsZCBzdGF5IHRoZSBzYW1lIGFzIGluIEphdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaCAq
LwotCiAjdW5kZWYgV0tfRVhQT1JUCiAjaWYgZGVmaW5lZChXS19OT19FWFBPUlQpCiAjZGVmaW5l
IFdLX0VYUE9SVApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHJldmlzaW9uIDc3OTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzYsOSArMTUzNiwxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNlCiB9CiAKIC8vIFBvbGljeUNsaWVudAotdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3Qg
ZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlTmF2aWdhdGlvblR5cGUsIHVpbnQzMl90IG9wYXF1ZU1v
ZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiB1cmwsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYg
cG9saWN5QWN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlTmF2aWdhdGlvblR5cGUs
IHVpbnQzMl90IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24pCiB7Ci0gICAgaWYgKHVybCAhPSBwZW5kaW5nQVBJUmVx
dWVzdFVSTCgpKQorICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIGNvbnRleHQoKSk7
CisgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChyZXF1ZXN0LnVybCgpICE9IHBlbmRpbmdBUElSZXF1ZXN0VVJMKCkp
CiAgICAgICAgIGNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwoKTsKIAogICAgIFdlYkZyYW1lUHJv
eHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKQEAgLTE1NTUsNyArMTU2
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBtX2lu
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IHRydWU7CiAgICAgbV9zeW5jTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQgPSBmYWxzZTsKICAgICAKLSAgICBpZiAoIW1f
cG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odGhpcywgbmF2aWdh
dGlvblR5cGUsIG1vZGlmaWVycywgbW91c2VCdXR0b24sIHVybCwgZnJhbWUsIGxpc3RlbmVyLmdl
dCgpKSkKKyAgICBpZiAoIW1fcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odGhpcywgZnJhbWUsIG5hdmlnYXRpb25UeXBlLCBtb2RpZmllcnMsIG1vdXNlQnV0dG9u
LCByZXF1ZXN0LCBsaXN0ZW5lci5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQogICAgICAgICBsaXN0
ZW5lci0+dXNlKCk7CiAKICAgICBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9
IGZhbHNlOwpAQCAtMTU2Nyw4ICsxNTcyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2EKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlTmF2
aWdhdGlvblR5cGUsIHVpbnQzMl90IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3Vz
ZUJ1dHRvbiwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQzMl90IG9wYXF1ZU5hdmlnYXRpb25UeXBlLCB1aW50MzJfdCBvcGFxdWVNb2RpZmll
cnMsIGludDMyX3Qgb3BhcXVlTW91c2VCdXR0b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQogeworICAgIFJlZlB0cjxBUElPYmplY3Q+
IHVzZXJEYXRhOworICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29k
ZXIodXNlckRhdGEsIGNvbnRleHQoKSk7CisgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNz
YWdlRGVjb2RlcikpCisgICAgICAgIHJldHVybjsKKwogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1l
KTsKIApAQCAtMTU3NywxMiArMTU4NywxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luCiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uID0gc3Rh
dGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihvcGFxdWVNb3VzZUJ1dHRvbik7CiAKICAg
ICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1lLT5z
ZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7Ci0gICAgaWYgKCFtX3BvbGljeUNs
aWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odGhpcywgbmF2aWdhdGlvblR5cGUs
IG1vZGlmaWVycywgbW91c2VCdXR0b24sIHVybCwgZnJhbWUsIGxpc3RlbmVyLmdldCgpKSkKKyAg
ICBpZiAoIW1fcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0aGlz
LCBmcmFtZSwgbmF2aWdhdGlvblR5cGUsIG1vZGlmaWVycywgbW91c2VCdXR0b24sIHJlcXVlc3Qs
IGZyYW1lTmFtZSwgbGlzdGVuZXIuZ2V0KCksIHVzZXJEYXRhLmdldCgpKSkKICAgICAgICAgbGlz
dGVuZXItPnVzZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTUlN
RVR5cGUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCkKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBib29s
JiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IGRvd25sb2FkSUQpCiB7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgV2Vi
Q29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgY29udGV4
dCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCkBAIC0xNTkzLDcgKzE2
MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTUlNRVR5CiAgICAgbV9p
bkRlY2lkZVBvbGljeUZvck1JTUVUeXBlID0gdHJ1ZTsKICAgICBtX3N5bmNNaW1lVHlwZVBvbGlj
eUFjdGlvbklzVmFsaWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9wb2xpY3lDbGllbnQuZGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGUodGhpcywgTUlNRVR5cGUsIHVybCwgZnJhbWUsIGxpc3RlbmVyLmdl
dCgpKSkKKyAgICBpZiAoIW1fcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck1JTUVUeXBlKHRo
aXMsIGZyYW1lLCBNSU1FVHlwZSwgcmVxdWVzdCwgbGlzdGVuZXIuZ2V0KCksIDAgLyp1c2VyRGF0
YSovKSkKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwogCiAgICAgbV9pbkRlY2lkZVBvbGljeUZv
ck1JTUVUeXBlID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMwLDkgKzQzMCw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUFjY2Vzc2li
aWxpdHlQYWdlVG9rZW4oY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIAotICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90IG1vdXNl
QnV0dG9uLCBjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3QgbGlzdGVuZXJJRCwgYm9vbCYgcmVj
ZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24pOwotICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG5h
dmlnYXRpb25UeXBlLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0b24sIGNv
bnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck1JTUVUeXBlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklELCBib29sJiByZWNlaXZlZFBv
bGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQp
OworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFt
ZUlELCB1aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90
IG1vdXNlQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBib29sJiByZWNlaXZlZFBvbGlj
eUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3QgbmF2aWdhdGlvblR5
cGUsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3VzZUJ1dHRvbiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0
aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCk7CiAKICAg
ICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZy
YW1lSUQsIGNvbnN0IFN0cmluZ1BhaXJWZWN0b3ImIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3Qg
bGlzdGVuZXJJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gNzc5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGUodWludDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgTUlNRVR5cGUsIFdU
Rjo6U3RyaW5nIHVybCwgdWludDY0X3QgbGlzdGVuZXJJRCkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKLSAg
ICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQz
Ml90IG5hdmlnYXRpb25UeXBlLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0
b24sIFdURjo6U3RyaW5nIHVybCwgdWludDY0X3QgbGlzdGVuZXJJRCkgLT4gKGJvb2wgcmVjZWl2
ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IHBvbGljeUFjdGlvbikKLSAgICBEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3QgbmF2aWdhdGlvblR5
cGUsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3VzZUJ1dHRvbiwgV1RGOjpTdHJpbmcg
dXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAgIERlY2lkZVBvbGljeUZvck1JTUVUeXBlKHVp
bnQ2NF90IGZyYW1lSUQsIFdURjo6U3RyaW5nIE1JTUVUeXBlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKKyAgICBEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG5h
dmlnYXRpb25UeXBlLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0b24sIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJL
aXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSAtPiAoYm9vbCBy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9saWN5QWN0aW9uKQorICAgIERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBuYXZpZ2F0
aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90IG1vdXNlQnV0dG9uLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV1RGOjpTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVz
ZXJEYXRhKQogCiAgICAgIyBQcm9ncmVzcyBtZXNzYWdlcwogICAgIERpZENoYW5nZVByb2dyZXNz
KGRvdWJsZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xpY3lD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb2xp
Y3lDbGllbnQuY3BwCShyZXZpc2lvbiA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQb2xpY3lDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzNiArMjcsNDIgQEAK
ICNpbmNsdWRlICJXZWJQb2xpY3lDbGllbnQuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3Qu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1i
b29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQ
YWdlUHJveHkqIHBhZ2UsIE5hdmlnYXRpb25UeXBlIHR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMg
bW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IFN0cmlu
ZyYgdXJsLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
KiBsaXN0ZW5lcikKK2Jvb2wgV2ViUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIE5hdmln
YXRpb25UeXBlIHR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBXZWJNb3VzZUV2
ZW50OjpCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqIGxpc3RlbmVyLCBBUElPYmplY3Qq
IHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJKG1v
ZGlmaWVycyksIHRvQVBJKG1vdXNlQnV0dG9uKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvQVBJ
KGZyYW1lKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBSZWZQ
dHI8V2ViVVJMUmVxdWVzdD4gcmVxdWVzdCA9IFdlYlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJj
ZVJlcXVlc3QpOworCisgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh0eXBlKSwgdG9BUEkobW9kaWZpZXJz
KSwgdG9BUEkobW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgdG9BUEkobGlzdGVu
ZXIpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgTmF2aWdhdGlvblR5cGUgdHlwZSwgV2ViRXZlbnQ6
Ok1vZGlmaWVycyBtb2RpZmllcnMsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbiwg
Y29uc3QgU3RyaW5nJiB1cmwsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkqIGxpc3RlbmVyKQorYm9vbCBXZWJQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycywg
V2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eSogbGlzdGVuZXIsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0
b0FQSShwYWdlKSwgdG9BUEkodHlwZSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKG1vdXNlQnV0
dG9uKSwgdG9VUkxSZWYodXJsLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobGlzdGVuZXIp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBSZWZQdHI8V2ViVVJMUmVxdWVzdD4gcmVxdWVz
dCA9IFdlYlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3QpOworCisgICAgbV9jbGll
bnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHR5cGUpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSShtb3VzZUJ1dHRvbiksIHRv
QVBJKHJlcXVlc3QuZ2V0KCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVu
ZXIpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUo
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IHVybCwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSog
bGlzdGVuZXIpCitib29sIFdlYlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSogbGlzdGVuZXIsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAg
ICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUodG9BUEkocGFn
ZSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCB0b0FQSShm
cmFtZSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgUmVmUHRy
PFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VS
ZXF1ZXN0KTsKKworICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck1JTUVUeXBlKHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKHJlcXVlc3Qu
Z2V0KCkpLCB0b0FQSShsaXN0ZW5lciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb2xpY3lDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUG9saWN5Q2xpZW50LmgJKHJldmlzaW9uIDc3OTYyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSAr
MjcsMTYgQEAKICNkZWZpbmUgV2ViUG9saWN5Q2xpZW50X2gKIAogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgorI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1
ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKQEAgLTQwLDkgKzQ1LDkgQEAgY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5OwogCiBjbGFzcyBXZWJQb2xpY3lDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLUGFnZVBv
bGljeUNsaWVudD4gewogcHVibGljOgotICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihXZWJQYWdlUHJveHkqLCBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSwgV2ViRXZlbnQ6
Ok1vZGlmaWVycywgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBTdHJpbmcmIHVybCwgV2Vi
RnJhbWVQcm94eSosIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSopOwotICAgIGJvb2wgZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSosIFdlYkNvcmU6Ok5hdmln
YXRpb25UeXBlLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIGNv
bnN0IFN0cmluZyYgdXJsLCBXZWJGcmFtZVByb3h5KiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5Kik7Ci0gICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgV2ViRnJhbWVQcm94eSosIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSopOworICAgIGJvb2wgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6TmF2aWdhdGlv
blR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Kiwg
QVBJT2JqZWN0KiB1c2VyRGF0YSk7CisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6Ok5hdmlnYXRpb25U
eXBlLCBXZWJFdmVudDo6TW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpCdXR0b24sIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHkqLCBBUElPYmplY3QqIHVzZXJEYXRhKTsKKyAgICBib29sIGRl
Y2lkZVBvbGljeUZvck1JTUVUeXBlKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkqLCBBUElPYmplY3QqIHVzZXJEYXRhKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAkocmV2aXNpb24gNzc5NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDkgKzk2LDkgQEAgc3RydWN0IFdLUGFn
ZUxvYWRlckNsaWVudCB7CiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgV0tQYWdl
TG9hZGVyQ2xpZW50OwogCiAvLyBQb2xpY3kgQ2xpZW50LgotdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlZiB1cmwsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVOYXZpZ2F0aW9u
VHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRN
b3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZWYgdXJsLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwotdHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGVDYWxsYmFjayko
V0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIE1JTUVUeXBlLCBXS1VSTFJlZiB1cmwsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9k
aWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLVVJMUmVxdWVzdFJlZiBy
ZXF1ZXN0LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb25DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tV
UkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGVD
YWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU3RyaW5nUmVmIE1J
TUVUeXBlLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVm
IGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwog
CiBzdHJ1Y3QgV0tQYWdlUG9saWN5Q2xpZW50IHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTAzLDYgKzUwMyw4IEBACiAJCUJD
NjQ2QzFDMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDZDMTgxMUREMzk5
RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi87IH07CiAJCUJDNjQ2QzFE
MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2QzE5MTFERDM5OUYwMDY0NTVC
MCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CiAJCUJDNkVEQUE2MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZF
REFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovOyB9OworCQlCQzcwNDNDQzEy
Rjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcwNDNDQTEyRjc1RUUwMDA2NDcy
QjkgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggKi87IH07CisJCUJDNzA0M0NEMTJGNzVF
RTAwMDY0NzJCOSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3MDQzQ0IxMkY3NUVFMDAwNjQ3MkI5
IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgKi87IH07CiAJCUJDNzJCOUZBMTFFNjQ3
NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzcyQjlGODExRTY0NzZCMDAxRUI0RUEg
LyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwICovOyB9OwogCQlCQzcyQjlGQjExRTY0NzZC
MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovOyB9OwogCQlCQzcyQkExRDExRTY0OTA3MDAxRUI0
RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9y
d2FyZExpc3QuY3BwICovOyB9OwpAQCAtNTE3LDYgKzUxOSwxMCBAQAogCQlCQzdCNjMzODEyQTQ1
QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3QjYzMzYxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdy
b3VwLmNwcCAqLzsgfTsKIAkJQkM3QjYzM0QxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFn
ZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzdCNjMzQjEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQYWdlR3JvdXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDN0I2MzNFMTJBNDVEMTIw
MEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdCNjMzQzEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5k
bGVQYWdlR3JvdXAuY3BwICovOyB9OworCQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgxNDdBNzEyRjY0Q0RBMDA3QjJDMzIgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlUG9saWN5Q2xpZW50LmggKi87IH07CisJCUJDODE0N0FBMTJGNjRDREEwMDdCMkMz
MiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MTQ3QTgxMkY2NENEQTAwN0IyQzMyIC8q
IEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAgKi87IH07CisJCUJDODE0N0Q1MTJG
NjZEMzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODE0N0QzMTJGNjZEMzEw
MDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCAqLzsgfTsKKwkJQkM4
MTQ3RDYxMkY2NkQzMTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgxNDdE
NDEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCAq
LzsgfTsKIAkJQkM4NDUyQTcxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1MkE1MTE2MkM4
MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgKi87IH07CiAJCUJDODQ1MkE4MTE2MkM4MDkw
MENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmgg
Ki87IH07CiAJCUJDODRFQjE4MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODRFQjE3
MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSAqLzsgfTsKQEAgLTExMzks
NyArMTE0NSw3IEBACiAJCUJDMTExQTU0MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250
ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTExQTU2
MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJEcmFnQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRyYWdDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzExMUE1NzExMkY0RkJCMDAzMzdCQUIgLyogV2ViRWRpdG9yQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDMTExQTU4MTEyRjRGQkIwMDMzN0JB
QiAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJGcmFtZUxvYWRlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDMTExQTU4MTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9Owog
CQlCQzExMUE1OTExMkY0RkJCMDAzMzdCQUIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvckNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTExQURDMTEyRjVCOTMwMDMzN0JBQiAv
KiBXZWJGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJG
cmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTExQURGMTEyRjVCQzIw
MDMzN0JBQiAvKiBXZWJFcnJvcnNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJFcnJvcnNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMTgxLDcgKzExODcsNyBAQAogCQlCQzIwNEVFQTExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMDRFRUIxMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVu
ZGxlQVBJQ2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUFQ
SUNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMDRFRUQxMUM4M0VDODAw
OEYzMzc1IC8qIFdLQnVuZGxlSW5pdGlhbGl6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0J1bmRsZUluaXRpYWxpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQkMyMDUyN0YxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkMyMDUyN0YxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+Ijsgd3JhcHNMaW5lcyA9IDA7IH07CiAJCUJDMjA1MjgwMTFDOTQyODQwMDhG
MzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tCdW5kbGVQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
NjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MjY1MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3OCw2ICsxMjg0LDggQEAKIAkJQkM2NDZDMTgxMURE
Mzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkMxOTExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNr
Rm9yd2FyZExpc3RJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFj
a0ZvcndhcmRMaXN0SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZFREFB
NTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQYWdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
NzA0M0NBMTJGNzVFRTAwMDY0NzJCOSAvKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNzA0M0NCMTJGNzVFRTAwMDY0NzJCOSAv
KiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM3MkI5RjgxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3
MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBX
ZWJCYWNrRm9yd2FyZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyOTIsNiArMTMwMCwxMCBAQAogCQlCQzdCNjMzNjEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdl
R3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlR3Jv
dXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzdCNjMzQjEyQTQ1RDEyMDBE
MTc0QTQgLyogV0tCdW5kbGVQYWdlR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tCdW5kbGVQYWdlR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM3QjYzM0MxMkE0NUQxMjAwRDE3NEE0IC8qIFdLQnVuZGxlUGFnZUdyb3VwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlUGFnZUdyb3VwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4MTQ3QTcxMkY2NENEQTAwN0IyQzMyIC8qIElu
amVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+Ijsgd3JhcHNMaW5lcyA9IDA7IH07CisJCUJDODE0N0E4MTJGNjRDREEwMDdCMkMzMiAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+Ijsgd3JhcHNMaW5lcyA9IDA7IH07CisJCUJDODE0N0QzMTJGNjZE
MzEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODE0N0Q0MTJGNjZEMzEwMDdCMkMzMiAv
KiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTUxMTYyQzgwOTAwQ0FCOUI1IC8qIERy
YXdpbmdBcmVhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERyYXdp
bmdBcmVhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTYxMTYyQzgw
OTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERyYXdpbmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODRFQjE3
MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjQyOSwxOCArMjQ0MSwyMCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQzIwNEVFNzExQzgzRUFEMDA4RjMzNzUgLyogQVBJ
ICovLAotCQkJCUJDMjA0RUU0MTFDODNFOUMwMDhGMzM3NSAvKiBtYWMgKi8sCiAJCQkJQkM0QkVF
OTYxMjBBMDkxNzAwRkJBMEM3IC8qIERPTSAqLywKKwkJCQlCQzIwNEVFNDExQzgzRTlDMDA4RjMz
NzUgLyogbWFjICovLAogCQkJCUJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1
bmRsZS5jcHAgKi8sCiAJCQkJQkMyMDRFRTExMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVu
ZGxlLmggKi8sCi0JCQkJQkNFRTdEQzQxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcCAqLywKLQkJCQlCQ0VFN0RDMzEyOEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCAqLywKIAkJCQk5MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCTkzNUVFQjkwMTI3NzYxNUQwMDMz
MjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovLAogCQkJCTkzNUVFQjkx
MTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
ICovLAogCQkJCTkzNUVFQjkyMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCAqLywKKwkJCQlCQ0VFN0RDNDEyOEI2NDVEMDA5ODI3REEgLyogSW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwICovLAorCQkJCUJDRUU3REMzMTI4QjY0NUQwMDk4MjdEQSAv
KiBJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRF
MSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwICovLAogCQkJCUJDNDk4NjE2MTI0
RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCAqLywKKwkJCQlC
QzgxNDdENDEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmNwcCAqLywKKwkJCQlCQzgxNDdEMzEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmggKi8sCiAJCQkJNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIElu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLywKIAkJCQk1MTI5MzVFMjEy
ODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAq
LywKIAkJCQlFMUVFNTNFNjExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50LmNwcCAqLywKQEAgLTI0NDksNiArMjQ2Myw4IEBACiAJCQkJQkMxNEUxMDgxMjBC
OTA1RTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCAqLywKIAkJCQlC
Q0E4QzZBNjExRTNCQTVGMDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcCAqLywKIAkJCQlCQ0E4QzZBNzExRTNCQTVGMDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmggKi8sCisJCQkJQkM4MTQ3QTgxMkY2NENEQTAwN0IyQzMyIC8qIElu
amVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAgKi8sCisJCQkJQkM4MTQ3QTcxMkY2NENE
QTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oICovLAogCQkJCTY1
NDZBODI5MTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQuY3BwICovLAogCQkJCTY1NDZBODJBMTMwMDAxNjQwMDBDRUIxQyAvKiBJbmplY3RlZEJ1
bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCAqLywKIAkJCQlCQ0E4QzZBRDExRTNDMDg3MDA4
MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwICovLApAQCAtMjQ5NCw2ICsy
NTEwLDggQEAKIAkJCQlCQzIwNEVFRDExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGVJbml0aWFs
aXplLmggKi8sCiAJCQkJNjVCODZGMTcxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVj
dG9yLmNwcCAqLywKIAkJCQk2NUI4NkYxODEyRjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNw
ZWN0b3IuaCAqLywKKwkJCQlCQzcwNDNDQjEyRjc1RUUwMDA2NDcyQjkgLyogV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcCAqLywKKwkJCQlCQzcwNDNDQTEyRjc1RUUwMDA2NDcyQjkgLyogV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggKi8sCiAJCQkJQkM0QkVGRTAxMjBBMUE0QzAwRkJBMEM3
IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5jcHAgKi8sCiAJCQkJQkM0QkVGREYxMjBBMUE0QzAwRkJB
MEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5oICovLAogCQkJCUJDNTc0NTBCMTI2M0IxNTUwMDZG
MEYxMiAvKiBXS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggKi8sCkBAIC0zMTUwLDYgKzMxNjgs
OSBAQAogCQkJCTFBOTYzNkJEMTJGMzQ4NDkwMDc4QTA2MiAvKiBTaGFyZWFibGVTdXJmYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTk2MzlGNzEyRjM4RUNEMDA3OEEwNjIgLyogQ29yZUFuaW1h
dGlvblJlbmRlcmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY5MEQxNzEyRjM5RTMzMDBFQ0Qy
ODkgLyogTGF5ZXJUcmVlSG9zdE1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4MTQ3QTkxMkY2
NENEQTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkM4MTQ3RDUxMkY2NkQzMTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM3MDQzQ0MxMkY3NUVFMDAwNjQ3
MkI5IC8qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5
MkRDMTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQTU2QTFDMTJGOTAyOEUwMEM1NjZDNyAvKiBXZWJHcmFwaGljc0NvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQTU2QTY1MTJGOUM4RjkwMEM1NjZDNyAvKiBXS0dyYXBoaWNz
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjIzLDYgKzM2NDQsOSBAQAogCQkJCTY1MDFC
RDFBMTJGMTI0MzQwMEU5RjI0OCAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTk2MzZCQzEyRjM0ODQ5MDA3OEEwNjIgLyogU2hhcmVhYmxlU3VyZmFjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTk2MzlGODEyRjM4RUNEMDA3OEEwNjIgLyogQ29yZUFuaW1h
dGlvblJlbmRlcmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4MTQ3QUExMkY2NENEQTAwN0Iy
QzMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQzgxNDdENjEyRjY2RDMxMDA3QjJDMzIgLyogSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDNzA0M0NEMTJGNzVFRTAwMDY0NzJCOSAv
KiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5MkRD
MTMxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHRNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQ0E1NkExRDEyRjkwMjhFMDBDNTY2QzcgLyogV2ViR3JhcGhpY3NDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTU2QTY2MTJGOUM4RjkwMEM1NjZDNyAvKiBXS0dyYXBo
aWNzQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5oIgorCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL01vdXNlRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25BY3Rpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VJRXZlbnRXaXRoS2V5U3RhdGUuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgTW91c2VF
dmVudCogbW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBmb3IgKGNvbnN0IEV2ZW50KiBlID0gbmF2aWdh
dGlvbkFjdGlvbi5ldmVudCgpOyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpIHsKKyAgICAg
ICAgaWYgKGUtPmlzTW91c2VFdmVudCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IE1vdXNlRXZlbnQqPihlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50KGNvbnN0IE1v
dXNlRXZlbnQqIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKCFtb3VzZUV2ZW50KQorICAgICAgICBy
ZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247CisKKyAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1
dHRvbkRvd24oKSkKKyAgICAgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOworCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbj4obW91c2VFdmVudC0+
YnV0dG9uKCkpOworfQorCitXZWJFdmVudDo6TW9kaWZpZXJzIEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIHVpbnQzMl90IG1vZGlmaWVycyA9IDA7
CisgICAgaWYgKGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUqIGtleVN0YXRlRXZlbnQgPSBmaW5k
RXZlbnRXaXRoS2V5U3RhdGUoY29uc3RfY2FzdDxFdmVudCo+KG5hdmlnYXRpb25BY3Rpb24uZXZl
bnQoKSkpKSB7CisgICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50LT5zaGlmdEtleSgpKQorICAgICAg
ICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICAgICAgaWYgKGtleVN0
YXRlRXZlbnQtPmN0cmxLZXkoKSkKKyAgICAgICAgICAgIG1vZGlmaWVycyB8PSBXZWJFdmVudDo6
Q29udHJvbEtleTsKKyAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPmFsdEtleSgpKQorICAgICAg
ICAgICAgbW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAgICAgIGlmIChrZXlTdGF0
ZUV2ZW50LT5tZXRhS2V5KCkpCisgICAgICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZlbnQ6Ok1l
dGFLZXk7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmll
cnM+KG1vZGlmaWVycyk7Cit9CisKK1dlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIHJldHVybiBtb3VzZUJ1
dHRvbkZvck1vdXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlv
bkFjdGlvbikpOworfQorCisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uPiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
IGZvcm1TdGF0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9uLCBmb3JtU3RhdGUpKTsKK30KKworSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQoreworICAgIG1fbmF2aWdhdGlvblR5
cGUgICAgPSBuYXZpZ2F0aW9uQWN0aW9uLnR5cGUoKTsKKyAgICBtX21vZGlmaWVycyAgICAgICAg
ID0gbW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKworICAg
IGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gbW91c2VFdmVudEZvck5hdmlnYXRp
b25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpIHsKKyAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0g
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVM
b2NhdGlvbigpLCBmYWxzZSkpOworICAgICAgICBtX21vdXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRv
bkZvck1vdXNlRXZlbnQobW91c2VFdmVudCk7CisgICAgfQorCisgICAgUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlID0gcHJwRm9ybVN0YXRlOworICAgIGlmIChmb3JtU3RhdGUpIHsKKyAgICAg
ICAgQVNTRVJUKGZvcm1TdGF0ZS0+Zm9ybSgpKTsKKyAgICAgICAgbV9mb3JtRWxlbWVudCAgID0g
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShmb3JtU3RhdGUtPmZvcm0oKSk7
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbl9oCisjZGVmaW5lIEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbl9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJUeXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRm9y
bVN0YXRlOworICAgIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJGcmFtZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5
cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOworCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUoV2ViRnJhbWUq
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KTsKKworICAgIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOworICAg
IHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKKworICAgIFdlYkNvcmU6Ok5h
dmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9u
VHlwZTsgfQorICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RpZmllcnM7IH0KKyAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24o
KSBjb25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uOyB9CisgICAgSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0
LmdldCgpOyB9CisgICAgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBmb3JtRWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9ybUVsZW1lbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsKKworICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgV2ViQ29y
ZTo6TmF2aWdhdGlvblR5cGUgbV9uYXZpZ2F0aW9uVHlwZTsKKyAgICBXZWJFdmVudDo6TW9kaWZp
ZXJzIG1fbW9kaWZpZXJzOworICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtX21vdXNlQnV0dG9u
OworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IG1faGl0VGVzdFJlc3Vs
dDsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBtX2Zvcm1FbGVtZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb25faApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGllbnQuaCIKKworI2lu
Y2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIElu
amVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbiogYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3Vy
Y2VSZXF1ZXN0KTsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CisgICAgbV9j
bGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSShwYWdlKSwgdG9BUEko
ZnJhbWUpLCB0b0FQSShhY3Rpb24pLCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgJnVzZXJEYXRhVG9Q
YXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1w
bCh1c2VyRGF0YVRvUGFzcykpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2UqIHBhZ2UsIFdlYkZy
YW1lKiBmcmFtZSwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKiBhY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8V2ViVVJMUmVxdWVzdD4gcmVxdWVzdCA9IFdlYlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJj
ZVJlcXVlc3QpOworCisgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKKyAgICBtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkocGFnZSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkoYWN0aW9uKSwgdG9BUEkocmVxdWVzdC5nZXQoKSksIHRvQVBJKGZyYW1lTmFt
ZS5pbXBsKCkpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVz
ZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXZWJQ
YWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNl
ckRhdGEpCit7CisgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJV
UkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKKworICAgIFdLVHlwZVJlZiB1c2Vy
RGF0YVRvUGFzcyA9IDA7CisgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUodG9B
UEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkocmVx
dWVzdC5nZXQoKSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
dXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3MpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
UG9saWN5Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRs
ZVBhZ2VQb2xpY3lDbGllbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lDbGll
bnRfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjsKK2Ns
YXNzIFdlYkZyYW1lOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdl
UG9saWN5Q2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQ+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2Vi
UGFnZSosIFdlYkZyYW1lKiwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsK
KyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlKiwgV2ViRnJh
bWUqLCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdlYlBhZ2UqLCBX
ZWJGcmFtZSosIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudF9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgJKHJldmlzaW9uIDc3OTYyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ7CkBAIC02MCw2ICs2MSw3IEBAIFdL
X0FERF9BUElfTUFQUElORyhXS0J1bmRsZUNTU1N0eWxlRGVjbGEKIFdLX0FERF9BUElfTUFQUElO
RyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRs
ZUhpdFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiwgSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiwg
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlUGFn
ZUdyb3VwUmVmLCBXZWJQYWdlR3JvdXBQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRs
ZVBhZ2VPdmVybGF5UmVmLCBQYWdlT3ZlcmxheSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgi
CisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRs
ZUFQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpBUElUeXBlKTsKK30KKworV0tGcmFtZU5hdmlnYXRp
b25UeXBlIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldE5hdmlnYXRpb25UeXBlKFdLQnVuZGxl
TmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uUmVmKQoreworICAgIHJldHVybiB0
b0FQSSh0b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZiktPm5hdmlnYXRpb25UeXBlKCkpOworfQor
CitXS0V2ZW50TW9kaWZpZXJzIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldEV2ZW50TW9kaWZp
ZXJzKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uUmVmKQorewor
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZiktPm1vZGlmaWVycygp
KTsKK30KKworV0tFdmVudE1vdXNlQnV0dG9uIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbkdldEV2
ZW50TW91c2VCdXR0b24oV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rp
b25SZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChuYXZpZ2F0aW9uQWN0aW9uUmVmKS0+
bW91c2VCdXR0b24oKSk7Cit9CisKK1dLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZiBXS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb25Db3B5SGl0VGVzdFJlc3VsdChXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25S
ZWYgbmF2aWdhdGlvbkFjdGlvblJlZikKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gdG9JbXBsKG5hdmlnYXRpb25BY3Rpb25SZWYpLT5o
aXRUZXN0UmVzdWx0KCk7CisgICAgcmV0dXJuIHRvQVBJKGhpdFRlc3RSZXN1bHQucmVsZWFzZSgp
LmxlYWtSZWYoKSk7Cit9CisKK1dLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5hdmlnYXRp
b25BY3Rpb25Db3B5Rm9ybUVsZW1lbnQoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmln
YXRpb25BY3Rpb25SZWYpCit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4g
Zm9ybUVsZW1lbnQgPSB0b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZiktPmZvcm1FbGVtZW50KCk7
CisgICAgcmV0dXJuIHRvQVBJKGZvcm1FbGVtZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uX2gKKyNk
ZWZpbmUgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tC
YXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1BhZ2VMb2FkVHlwZXMuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uR2V0VHlw
ZUlEKCk7CisKK1dLX0VYUE9SVCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgV0tCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uR2V0TmF2aWdhdGlvblR5cGUoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5h
dmlnYXRpb25BY3Rpb24pOworV0tfRVhQT1JUIFdLRXZlbnRNb2RpZmllcnMgV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uR2V0RXZlbnRNb2RpZmllcnMoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVm
IG5hdmlnYXRpb25BY3Rpb24pOworV0tfRVhQT1JUIFdLRXZlbnRNb3VzZUJ1dHRvbiBXS0J1bmRs
ZU5hdmlnYXRpb25BY3Rpb25HZXRFdmVudE1vdXNlQnV0dG9uKFdLQnVuZGxlTmF2aWdhdGlvbkFj
dGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uKTsKK1dLX0VYUE9SVCBXS0J1bmRsZUhpdFRlc3RSZXN1
bHRSZWYgV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uQ29weUhpdFRlc3RSZXN1bHQoV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24pOworV0tfRVhQT1JUIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25Db3B5Rm9ybUVsZW1lbnQoV0tC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24pOworCisjaWZkZWYgX19j
cGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
X2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDc3OTYy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwxMyBAQCB2b2lkIFdLQnVu
ZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudChXCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0
aWFsaXplSW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQod2tDbGllbnQpOwogfQogCit2
b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50KiB3a0NsaWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQg
JiYgd2tDbGllbnQtPnZlcnNpb24pCisgICAgICAgIHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCh3a0NsaWVudCk7Cit9CisK
IHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdL
QnVuZGxlUGFnZVVJQ2xpZW50KiB3a0NsaWVudCkKIHsKICAgICBpZiAod2tDbGllbnQgJiYgd2tD
bGllbnQtPnZlcnNpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9u
IDc3OTYyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwyMCBAQCBzdHJ1
Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IHsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OwogCisvLyBQb2xpY3kg
Q2xpZW50Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tV
UkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwg
V0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tUeXBlUmVm
KiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1
bmRsZVBhZ2VEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgIFdLU3RyaW5nUmVmIE1JTUVUeXBlLCBXS1VS
TFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisKK3N0cnVjdCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQgeworICAgIGludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tCdW5kbGVQ
YWdlRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAg
ICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIFdLQnVuZGxlUGFnZURlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOworICAgIFdLQnVuZGxlUGFnZURlY2lkZVBvbGljeUZv
ck1JTUVUeXBlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
TUlNRVR5cGU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50IFdL
QnVuZGxlUGFnZVBvbGljeUNsaWVudDsKKwogLy8gUmVzb3VyY2UgTG9hZCBDbGllbnQKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEluaXRpYXRlTG9hZEZvclJlc291cmNlQ2FsbGJhY2sp
KFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYsIGJvb2wgcGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmcs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiBXS1VSTFJlcXVlc3RSZWYgKCpXS0J1
bmRsZVBhZ2VXaWxsU2VuZFJlcXVlc3RGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYs
IFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV0tVUkxSZXF1
ZXN0UmVmLCBXS1VSTFJlc3BvbnNlUmVmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwpAQCAtMjIyLDYgKzIzNiw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFn
ZVNldEVkaXRvckNsaWUKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldEZvcm1DbGllbnQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZUZvcm1DbGllbnQqIGNsaWVudCk7CiBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCogY2xpZW50KTsKK1dLX0VYUE9SVCB2
b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUGFnZVVJQ2xpZW50
KiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tCdW5kbGVQYWdlR3JvdXBSZWYgV0tCdW5kbGVQYWdl
R2V0UGFnZUdyb3VwKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAJKHJldmlzaW9uIDc3OTYyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogI2luY2x1ZGUgIkRyYXdp
bmdBcmVhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC0x
NTMsOCArMTU0LDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNoYW5nZQog
CiBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCiB7Ci0gICAgdWludDMyX3QgbW9k
aWZpZXJzID0gbW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsK
LSAgICBpbnQzMl90IG1vdXNlQnV0dG9uID0gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9u
KG5hdmlnYXRpb25BY3Rpb24pOworICAgIHVpbnQzMl90IG1vZGlmaWVycyA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vZGlmaWVyc0Zvck5h
dmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOworICAgIGludDMyX3QgbW91c2VCdXR0
b24gPSBzdGF0aWNfY2FzdDxpbnQzMl90PihJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CiAKICAg
ICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOwogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiA3Nzk2MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgpAQCAtNTc1
LDQ0ICs1NzYsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coCiAg
ICAgd2ViUGFnZS0+c2hvdygpOwogfQogCi11aW50MzJfdCBtb2RpZmllcnNGb3JOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCi17Ci0gICAg
dWludDMyX3QgbW9kaWZpZXJzID0gMDsKLSAgICBpZiAoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0
ZSoga2V5U3RhdGVFdmVudCA9IGZpbmRFdmVudFdpdGhLZXlTdGF0ZShjb25zdF9jYXN0PEV2ZW50
Kj4obmF2aWdhdGlvbkFjdGlvbi5ldmVudCgpKSkpIHsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZl
bnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZlbnQ6OlNoaWZ0
S2V5OwotICAgICAgICBpZiAoa2V5U3RhdGVFdmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAg
bW9kaWZpZXJzIHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OwotICAgICAgICBpZiAoa2V5U3RhdGVF
dmVudC0+YWx0S2V5KCkpCi0gICAgICAgICAgICBtb2RpZmllcnMgfD0gV2ViRXZlbnQ6OkFsdEtl
eTsKLSAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPm1ldGFLZXkoKSkKLSAgICAgICAgICAgIG1v
ZGlmaWVycyB8PSBXZWJFdmVudDo6TWV0YUtleTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbW9kaWZp
ZXJzOwotfQotCi1zdGF0aWMgY29uc3QgTW91c2VFdmVudCogZmluZE1vdXNlRXZlbnQoY29uc3Qg
RXZlbnQqIGV2ZW50KQotewotICAgIGZvciAoY29uc3QgRXZlbnQqIGUgPSBldmVudDsgZTsgZSA9
IGUtPnVuZGVybHlpbmdFdmVudCgpKSB7Ci0gICAgICAgIGlmIChlLT5pc01vdXNlRXZlbnQoKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2ZW50Kj4oZSk7Ci0g
ICAgfQotICAgIHJldHVybiAwOwotfQotCi1pbnQzMl90IG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQotewotICAg
IGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBmaW5kTW91c2VFdmVudChuYXZpZ2F0aW9u
QWN0aW9uLmV2ZW50KCkpOwotICAgIGlmICghbW91c2VFdmVudCkKLSAgICAgICAgcmV0dXJuIC0x
OwotCi0gICAgaWYgKCFtb3VzZUV2ZW50LT5idXR0b25Eb3duKCkpCi0gICAgICAgIHJldHVybiAt
MTsKLQotICAgIHJldHVybiBtb3VzZUV2ZW50LT5idXR0b24oKTsKLX0KLQogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShGcmFtZVBvbGlj
eUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgpICYmIHJlcXVlc3QudXJsKCkg
PT0gYmxhbmtVUkwoKSkgewpAQCAtNjI2LDE1ICs1ODksMjEgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXIoZnVuY3Rpb24pOwotICAgIGNvbnN0IFN0cmluZyYgdXJsID0gcmVxdWVzdC51cmwoKS5zdHJp
bmcoKTsgLy8gRklYTUU6IFBhc3MgZW50aXJlIHJlcXVlc3QuCi0gICAgaWYgKCF1cmwpCisgICAg
aWYgKCFyZXF1ZXN0LnVybCgpLnN0cmluZygpKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWZQ
dHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKworICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVu
dC4KKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlKHdlYlBhZ2UsIG1fZnJhbWUsIE1JTUVUeXBlLCByZXF1ZXN0LCB1c2VyRGF0
YSk7CisKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0
ZW5lcihmdW5jdGlvbik7CiAgICAgYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKICAgICB1aW50
NjRfdCBwb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgZG93bmxvYWRJRDsKLSAgICBpZiAoIXdl
YlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck1J
TUVUeXBlKG1fZnJhbWUtPmZyYW1lSUQoKSwgTUlNRVR5cGUsIHVybCwgbGlzdGVuZXJJRCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck1JTUVUeXBlOjpSZXBseShyZWNl
aXZlZFBvbGljeUFjdGlvbiwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSkpCisKKyAgICAvLyBO
b3RpZnkgdGhlIFVJUHJvY2Vzcy4KKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck1JTUVUeXBlKG1fZnJhbWUtPmZyYW1lSUQo
KSwgTUlNRVR5cGUsIHJlcXVlc3QsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck1JTUVUeXBlOjpSZXBseShyZWNlaXZlZFBvbGljeUFjdGlvbiwgcG9saWN5QWN0
aW9uLCBkb3dubG9hZElEKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNhbGwgdGhp
cyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgQ0ZOZXR3b3JrIGNhbiBvbmx5IGNvbnZlcnQgYSBsb2Fk
aW5nIGNvbm5lY3Rpb24gdG8gYSBkb3dubG9hZCBmcm9tIGl0cyBkaWRSZWNlaXZlUmVzcG9uc2Ug
Y2FsbGJhY2suCkBAIC02NDIsMjYgKzYxMSwyNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkCiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIGRv
d25sb2FkSUQpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAgUmVmUHRyPEFQ
SU9iamVjdD4gdXNlckRhdGE7CisKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uPiBhY3Rpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZSht
X2ZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmb3JtU3RhdGUpOworCisgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgorICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50
KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlv
bi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1c2VyRGF0YSk7CiAKLSAgICAvLyBGSVhNRTog
UGFzcyBtb3JlIHRoYW4ganVzdCB0aGUgbmF2aWdhdGlvbiBhY3Rpb24gdHlwZS4KLSAgICAvLyBG
SVhNRTogUGFzcyB0aGUgZnJhbWUgbmFtZS4KLSAgICBjb25zdCBTdHJpbmcmIHVybCA9IHJlcXVl
c3QudXJsKCkuc3RyaW5nKCk7IC8vIEZJWE1FOiBQYXNzIGVudGlyZSByZXF1ZXN0LgogCi0gICAg
dWludDMyX3QgbmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obmF2aWdhdGlv
bkFjdGlvbi50eXBlKCkpOwotICAgIHVpbnQzMl90IG1vZGlmaWVycyA9IG1vZGlmaWVyc0Zvck5h
dmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7Ci0gICAgaW50MzJfdCBtb3VzZUJ1dHRv
biA9IG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAg
ICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5j
dGlvbik7CiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25U
eXBlLCBtb2RpZmllcnMsIG1vdXNlQnV0dG9uLCB1cmwsIGxpc3RlbmVySUQpKTsKKyAgICAvLyBO
b3RpZnkgdGhlIFVJUHJvY2Vzcy4KKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCks
IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKSwgYWN0aW9uLT5tb2RpZmllcnMoKSwgYWN0aW9uLT5t
b3VzZUJ1dHRvbigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQsIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2
aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQogewogICAgIGlm
IChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnVybCgp
LmlzRW1wdHkoKSAmJiByZXF1ZXN0LnVybCgpID09IGJsYW5rVVJMKCkpIHsKICAgICAgICAgLy8g
V2ViS2l0MiBsb2FkcyBpbml0aWFsIGFib3V0OmJsYW5rIGRvY3VtZW50cyBzeW5jaHJvbm91c2x5
LCB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIHBvbGljeSBkZWxlZ2F0ZQpAQCAtNjc1LDIzICs2NDUs
MjQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICAo
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipmdW5jdGlv
bikoUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7
CiAKLSAgICAvLyBGSVhNRTogUGFzcyBtb3JlIHRoYW4ganVzdCB0aGUgbmF2aWdhdGlvbiBhY3Rp
b24gdHlwZS4KLSAgICBjb25zdCBTdHJpbmcmIHVybCA9IHJlcXVlc3QudXJsKCkuc3RyaW5nKCk7
IC8vIEZJWE1FOiBQYXNzIGVudGlyZSByZXF1ZXN0LgorICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24+IGFjdGlvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bjo6Y3JlYXRlKG1fZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZvcm1TdGF0ZSk7CiAKLSAgICB1
aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihuYXZpZ2F0aW9u
QWN0aW9uLnR5cGUoKSk7Ci0gICAgdWludDMyX3QgbW9kaWZpZXJzID0gbW9kaWZpZXJzRm9yTmF2
aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKLSAgICBpbnQzMl90IG1vdXNlQnV0dG9u
ID0gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwotICAg
IAorICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KKyAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2Vi
UGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0LCB1c2VyRGF0YSk7CisKKyAgICB1
aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlv
bik7CiAgICAgYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBwb2xpY3lB
Y3Rpb247Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2
aWdhdGlvblR5cGUsIG1vZGlmaWVycywgbW91c2VCdXR0b24sIHVybCwgbGlzdGVuZXJJRCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJl
cGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBwb2xpY3lBY3Rpb24pKSkKKworICAgIC8vIE5vdGlm
eSB0aGUgVUlQcm9jZXNzLgorICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKSwgYWN0aW9uLT5tb2RpZmllcnMoKSwgYWN0
aW9uLT5tb3VzZUJ1dHRvbigpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBvbGljeUFj
dGlvbiwgcG9saWN5QWN0aW9uKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNhbGwg
dGhpcyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgV2ViQ29yZSBjYW5ub3QgZ3JhY2VmdWxseSBoYW5k
bGUgYSBmcmFtZSBsb2FkIHdpdGhvdXQgYSBzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSBy
ZXBseS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc3OTYy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsOSArMjIyLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbjsKIH07CiAKLXVpbnQzMl90
IG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFj
dGlvbiYpOwotaW50MzJfdCBtb3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFdlYkZyYW1lTG9hZGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDc3OTYyKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTUsNiArMjU1LDExIEBAIHZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxl
TG8KICAgICBtX2xvYWRlckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVBv
bGljeUNsaWVudCogY2xpZW50KQoreworICAgIG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoY2xp
ZW50KTsKK30KKwogdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVSZXNvdXJj
ZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50KiBjbGllbnQpCiB7CiAg
ICAgbV9yZXNvdXJjZUxvYWRDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA3Nzk2MikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVQYWdlUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQ
YWdlUmVzb3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCkBAIC0xNzEsNiArMTcyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KFdL
QnVuZGxlUGFnZUVkaXRvckNsaWVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudChXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50Kik7CiAgICAgdm9pZCBpbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Kik7
CisgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVSZXNv
dXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Kik7CiAgICAgdm9p
ZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVVSUNsaWVudChXS0J1bmRsZVBhZ2VVSUNsaWVudCop
OwogCkBAIC0xNzgsNiArMTgwLDcgQEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudCYgaW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRv
ckNsaWVudDsgfQogICAgIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQmIGluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudCgpIHsgcmV0dXJuIG1fZm9ybUNsaWVudDsgfQogICAgIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCYgaW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKSB7IHJldHVy
biBtX2xvYWRlckNsaWVudDsgfQorICAgIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVudCYg
aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKSB7IHJldHVybiBtX3BvbGljeUNsaWVudDsgfQog
ICAgIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudCYgaW5qZWN0ZWRCdW5kbGVS
ZXNvdXJjZUxvYWRDbGllbnQoKSB7IHJldHVybiBtX3Jlc291cmNlTG9hZENsaWVudDsgfQogICAg
IEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50JiBpbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkgeyBy
ZXR1cm4gbV91aUNsaWVudDsgfQogCkBAIC01MDAsNiArNTAzLDcgQEAgcHJpdmF0ZToKICAgICBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQgbV9lZGl0b3JDbGllbnQ7CiAgICAgSW5qZWN0
ZWRCdW5kbGVQYWdlRm9ybUNsaWVudCBtX2Zvcm1DbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OworICAgIEluamVjdGVkQnVuZGxlUGFnZVBv
bGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQgbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQgbV91aUNsaWVudDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzc5NjcpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMi0wOCAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdLMjogQWRkIGFiaWxpdHkgdG8gcGFzcyBjb250ZXh0IHRvIHBvbGljeSBkZWxl
Z2F0ZSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NDAzMQorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm06CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAg
ICAgICAgKGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChkZWNpZGVQ
b2xpY3lGb3JNSU1FVHlwZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1BhZ2VMb2FkQmFzaWMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICBVcGRhdGUgcG9saWN5IGNsaWVudCBmb3IgbmV3IEFQ
SS4KKwogMjAxMS0wMi0wOCAgS3VuZHUgU3VjaGlzbWl0YSAgPHN1Y2hpLmt1bmR1QG5va2lhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgpJbmRleDogVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDc3
OTYyKQorKysgVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0J
KHdvcmtpbmcgY29weSkKQEAgLTM1OCwxOSArMzU4LDE5IEBAIHN0YXRpYyB2b2lkIGRpZENoYW5n
ZUJhY2tGb3J3YXJkTGlzdChXS1AKIAogLy8gTUFSSzogUG9saWN5IENsaWVudCBDYWxsYmFja3MK
IAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlZiB1
cmwsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZp
Z2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdL
RXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIExPRyhAImRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24iKTsKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOwogfQog
Ci1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZWYgdXJs
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0
aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZl
bnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3Ry
aW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgTE9HKEAiZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uIik7CiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVy
VXNlKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUo
V0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIE1JTUVUeXBlLCBXS1VSTFJlZiB1cmwsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1N0cmluZ1JlZiBNSU1FVHlwZSwgV0tVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvUGFnZUxvYWRCYXNpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCShyZXZpc2lvbiA3Nzk2
MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZEJhc2ljLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV0tQYWdlCiAgICAgdGVzdDFEb25lID0gdHJ1ZTsKIH0KIAotc3RhdGljIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVy
cywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlZiB1cmwsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBu
YXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1
dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewogICAgIFN0YXRlKiBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RhdGUqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CiAgICAgVEVTVF9BU1NFUlQoIXN0YXRlLT5k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKQEAgLTk4LDEyICs5OCwxMiBAQCBzdGF0
aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0CiAgICAgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdh
dGlvblR5cGUsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24g
bW91c2VCdXR0b24sIFdLVVJMUmVmIHVybCwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorc3RhdGljIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLVVJM
UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1N0cmluZ1JlZiBmcmFtZU5hbWUsIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CiB9CiAK
LXN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdLUGFnZVJlZiBwYWdlLCBXS1N0
cmluZ1JlZiBNSU1FVHlwZSwgV0tVUkxSZWYgdXJsLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0
aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tTdHJpbmdSZWYgTUlNRVR5cGUsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlz
dGVuZXIpOwogfQo=
</data>
<flag name="review"
          id="73295"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>