<?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>38413</bug_id>
          
          <creation_ts>2010-04-30 17:11:01 -0700</creation_ts>
          <short_desc>Add callback based API to get the textual representation of the RenderTree</short_desc>
          <delta_ts>2010-04-30 17:30:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219654</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-30 17:11:01 -0700</bug_when>
    <thetext>Add callback based API to get the textual representation of the RenderTree, useful for implementing DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219655</commentid>
    <comment_count>1</comment_count>
      <attachid>54837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-30 17:15:23 -0700</bug_when>
    <thetext>Created attachment 54837
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219656</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-30 17:17:17 -0700</bug_when>
    <thetext>Attachment 54837 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/UIProcess/API/C/WKPage.cpp:132:  WKPageRunJavaScriptInMainFrame_f is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/UIProcess/API/C/WKPage.cpp:157:  WKPageRenderTreeExternalRepresentation_f is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/UIProcess/RenderTreeExternalRepresentationCallback.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/UIProcess/RenderTreeExternalRepresentationCallback.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/ScriptReturnValueCallback.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 5 in 14 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>219660</commentid>
    <comment_count>3</comment_count>
      <attachid>54837</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-04-30 17:21:05 -0700</bug_when>
    <thetext>Comment on attachment 54837
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219668</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-30 17:30:37 -0700</bug_when>
    <thetext>Fixed in r58624.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54837</attachid>
            <date>2010-04-30 17:15:23 -0700</date>
            <delta_ts>2010-04-30 17:21:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>forBZ.diff</filename>
            <type>text/plain</type>
            <size>31540</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODYyMykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDQtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg0MTMKKyAgICAgICAgQWRkIGNhbGxi
YWNrIGJhc2VkIEFQSSB0byBnZXQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIFJl
bmRlclRyZWUuCisKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3Nh
Z2VLaW5kcy5oOgorICAgICAgICAoV2ViUGFnZU1lc3NhZ2U6Oik6CisgICAgICAgICogU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oOgorICAgICAgICAoV2Vi
UGFnZVByb3h5TWVzc2FnZTo6KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZV9mKToKKyAgICAgICAg
KFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uX2YpOgorICAgICAgICAoY2Fs
bFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmxvY2tBbmREaXNwb3NlKToKKyAgICAg
ICAgKGRpc3Bvc2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJsb2NrKToKKyAgICAg
ICAgKFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpnZW5lcmF0ZUNhbGxiYWNrSUQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrOjpSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6flJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrOjpwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6Y2FsbGJhY2tJRCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrOjp+U2NyaXB0UmV0dXJuVmFsdWVD
YWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s6OnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OlNjcmlwdFJl
dHVyblZhbHVlQ2FsbGJhY2s6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3Jp
cHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRHZXRSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZEV4aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorCiAyMDEwLTA0LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0Mi9TaGFyZWQvQ29y
ZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3NhZ2VLaW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
U2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaAkocmV2aXNpb24gNTg1
NDQpCisrKyBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlTWVzc2FnZUtpbmRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJQYWdlTWVz
c2FnZSB7CiAKIGVudW0gS2luZCB7Ci0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uLAogICAg
IENsb3NlLAorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbiwKKyAgICBHZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbiwKICAgICBHb0JhY2ssCiAgICAgR29Gb3J3YXJkLAogICAg
IEtleUV2ZW50LApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVBy
b3h5TWVzc2FnZUtpbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1
cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgJKHJldmlzaW9uIDU4NTQ0KQorKysgV2Vi
S2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgZW51bSBLaW5kIHsKICAgICBEaWRGaW5pc2hQ
cm9ncmVzcywKICAgICBEaWRGaXJzdExheW91dEZvckZyYW1lLAogICAgIERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lLAorICAgIERpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uLAogICAgIERpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhLAogICAgIERp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdCwKICAgICBEaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QsCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9SZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL1JlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIlJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQoreworICAg
IHN0YXRpYyB1aW50NjRfdCB1bmlxdWVDYWxsYmFja0lEID0gMTsKKyAgICByZXR1cm4gdW5pcXVl
Q2FsbGJhY2tJRCsrOworfQorCitSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxi
YWNrOjpSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrKHZvaWQqIGNvbnRl
eHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJh
Y2ssIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9u
IGRpc3Bvc2VDYWxsYmFjaykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9jYWxs
YmFjayhjYWxsYmFjaykKKyAgICAsIG1fZGlzcG9zZUNhbGxiYWNrKGRpc3Bvc2VDYWxsYmFjaykK
KyAgICAsIG1fY2FsbGJhY2tJRChnZW5lcmF0ZUNhbGxiYWNrSUQoKSkKK3sKK30KKworUmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6flJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uQ2FsbGJhY2soKQoreworICAgIEFTU0VSVCghbV9jYWxsYmFjayk7Cit9CisK
K3ZvaWQgUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmV0dXJuVmFsdWUp
Cit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworCisgICAgbV9jYWxsYmFjayh0b1JlZihyZXR1
cm5WYWx1ZS5pbXBsKCkpLCBtX2NvbnRleHQpOworCisgICAgbV9jYWxsYmFjayA9IDA7CisgICAg
bV9kaXNwb3NlQ2FsbGJhY2sgPSAwOworfQorCit2b2lkIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uQ2FsbGJhY2s6OmludmFsaWRhdGUoKQoreworICAgIEFTU0VSVChtX2NhbGxiYWNr
KTsKKworICAgIG1fZGlzcG9zZUNhbGxiYWNrKG1fY29udGV4dCk7CisKKyAgICBtX2NhbGxiYWNr
ID0gMDsKKyAgICBtX2Rpc3Bvc2VDYWxsYmFjayA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1JlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dDIvVUlQcm9jZXNzL1JlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFja19oCisjZGVmaW5lIFJlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAiV0tQYWdlUHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFN0cmluZzsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjaz4gY3JlYXRlKHZvaWQqIGNvbnRleHQsIFdL
UGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gY2FsbGJhY2ssIFdL
UGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uIGRpc3Bv
c2VDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjayhjb250ZXh0LCBjYWxsYmFjaywgZGlzcG9z
ZUNhbGxiYWNrKSk7CisgICAgfQorICAgIH5SZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkNhbGxiYWNrKCk7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0lEOyB9CisKKyAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJp
dmF0ZToKKyAgICBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrKHZvaWQq
LCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uLCBXS1BhZ2VS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkRpc3Bvc2VGdW5jdGlvbik7CisKKyAgICB2
b2lkKiBtX2NvbnRleHQ7CisgICAgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b25GdW5jdGlvbiBtX2NhbGxiYWNrOworICAgIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uRGlzcG9zZUZ1bmN0aW9uIG1fZGlzcG9zZUNhbGxiYWNrOworICAgIHVpbnQ2NF90
IG1fY2FsbGJhY2tJRDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFja19oCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNwcAkocmV2aXNpb24g
NTg1NDQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFJldHVy
blZhbHVlQ2FsbGJhY2suaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ1LDE4
ICs0NiwyNyBAQCBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrOjpTY3JpcHRSZXR1cm5WCiAKIFNj
cmlwdFJldHVyblZhbHVlQ2FsbGJhY2s6On5TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrKCkKIHsK
LSAgICBpZiAobV9kaXNwb3NlQ2FsbGJhY2spCi0gICAgICAgIG1fZGlzcG9zZUNhbGxiYWNrKG1f
Y29udGV4dCk7CisgICAgQVNTRVJUKCFtX2NhbGxiYWNrKTsKIH0KIAotdm9pZCBTY3JpcHRSZXR1
cm5WYWx1ZUNhbGxiYWNrOjpwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoV2ViQ29yZTo6
U3RyaW5nSW1wbCogcmV0dXJuVmFsdWUpCit2b2lkIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s6
OnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJl
dHVyblZhbHVlKQogewogICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKIAotICAgIG1fY2FsbGJhY2so
bV9jb250ZXh0LCB0b1JlZihyZXR1cm5WYWx1ZSkpOworICAgIG1fY2FsbGJhY2sobV9jb250ZXh0
LCB0b1JlZihyZXR1cm5WYWx1ZS5pbXBsKCkpKTsKICAgICAKICAgICBtX2NhbGxiYWNrID0gMDsK
ICAgICBtX2Rpc3Bvc2VDYWxsYmFjayA9IDA7CiB9CiAKK3ZvaWQgU2NyaXB0UmV0dXJuVmFsdWVD
YWxsYmFjazo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworCisgICAg
bV9kaXNwb3NlQ2FsbGJhY2sobV9jb250ZXh0KTsKKworICAgIG1fY2FsbGJhY2sgPSAwOworICAg
IG1fZGlzcG9zZUNhbGxiYWNrID0gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9TY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5oCShyZXZp
c2lvbiA1ODU0NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1NjcmlwdFJldHVyblZhbHVlQ2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTdHJpbmdJbXBsOwor
ICAgIGNsYXNzIFN0cmluZzsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs0OSw4
IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxiYWNrSUQ7IH0KIAotICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KFdlYkNvcmU6OlN0cmluZ0ltcGwqKTsKKyAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsK
IAogcHJpdmF0ZToKICAgICBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrKHZvaWQqLCBTY3JpcHRS
ZXR1cm5WYWx1ZUNhbGxiYWNrRnVuY3Rpb24sIFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tEaXNw
b3NlRnVuY3Rpb24pOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biA1ODU0NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCwxNyArMTUwLDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAg
ICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxSZWZQdHI8
V2ViRnJhbWVQcm94eT4gPiBmcmFtZTsKLSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9mcmFtZU1h
cCwgZnJhbWUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWUuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBmcmFtZVtpXS0+ZGlzY29ubmVjdCgpOworICAgIG1fY2xv
c2VkID0gdHJ1ZTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZXM7
CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fZnJhbWVNYXAsIGZyYW1lcyk7CisgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBmcmFtZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICBmcmFtZXNbaV0tPmRpc2Nvbm5lY3QoKTsKICAgICBtX2ZyYW1lTWFwLmNsZWFyKCk7CiAgICAg
bV9tYWluRnJhbWUgPSAwOwogCiAgICAgbV9wYWdlVGl0bGUgPSBTdHJpbmcoKTsKICAgICBtX3Rv
b2xUaXAgPSBTdHJpbmcoKTsKIAotICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgd2l0aCBwZW5k
aW5nIG1fc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja3MuCisgICAgVmVjdG9yPFJlZlB0cjxTY3Jp
cHRSZXR1cm5WYWx1ZUNhbGxiYWNrPiA+IHNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzOworICAg
IGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzLCBzY3JpcHRS
ZXR1cm5WYWx1ZUNhbGxiYWNrcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBzY3Jp
cHRSZXR1cm5WYWx1ZUNhbGxiYWNrcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHNj
cmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzW2ldLT5pbnZhbGlkYXRlKCk7CisgICAgbV9zY3JpcHRS
ZXR1cm5WYWx1ZUNhbGxiYWNrcy5jbGVhcigpOworCisgICAgVmVjdG9yPFJlZlB0cjxSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrPiA+IHJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uQ2FsbGJhY2tzOworICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3JlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzLCByZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSByZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzW2ld
LT5pbnZhbGlkYXRlKCk7CisgICAgbV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNh
bGxiYWNrcy5jbGVhcigpOworCiAgICAgbV9jYW5Hb0ZvcndhcmQgPSBmYWxzZTsKICAgICBtX2Nh
bkdvQmFjayA9IGZhbHNlOwogCkBAIC0xNzIsOCArMTg1LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNsb3NlKCkKIAogICAgIHByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VNZXNz
YWdlOjpDbG9zZSwgbV9wYWdlSUQsIENvcmVJUEM6OkluKCkpOwogICAgIHByb2Nlc3MoKS0+cmVt
b3ZlV2ViUGFnZShtX3BhZ2VJRCk7Ci0KLSAgICBtX2Nsb3NlZCA9IHRydWU7CiB9CiAKIGJvb2wg
V2ViUGFnZVByb3h5Ojp0cnlDbG9zZSgpCkBAIC0yODksNiArMzAwLDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnIKICAgICBwcm9jZXNzKCktPmNvbm5lY3Rpb24o
KS0+c2VuZChXZWJQYWdlTWVzc2FnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lLCBtX3BhZ2VJ
RCwgQ29yZUlQQzo6SW4oc2NyaXB0LCBjYWxsYmFja0lEKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihQYXNzUmVmUHRyPFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+IHBycENhbGxiYWNrKQoreworICAg
IFJlZlB0cjxSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrPiBjYWxsYmFj
ayA9IHBycENhbGxiYWNrOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgIG1fcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBwcm9jZXNzKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZChXZWJQYWdlTWVzc2FnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb24sIG1fcGFnZUlELCBjYWxsYmFja0lEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6
OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKQEAgLTQ3NSw2
ICs0OTQsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcgogICAg
ICAgICAgICAgZGlkUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHJlc3VsdFN0cmluZywgY2FsbGJh
Y2tJRCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBh
Z2VQcm94eU1lc3NhZ2U6OkRpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uOiB7
CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nOworICAgICAgICAgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmRlY29kZShDb3JlSVBDOjpP
dXQocmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgZGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24ocmVzdWx0
U3RyaW5nLCBjYWxsYmFja0lEKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6U2V0VG9vbFRpcDogewogICAgICAgICAgICAg
U3RyaW5nIHRvb2xUaXA7CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy5kZWNvZGUodG9vbFRp
cCkpCkBAIC03NTUsNyArNzgyLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5KYXZhU2Ny
aXB0SW5NYWkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmltcGwoKSk7CisgICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShyZXN1bHRTdHJpbmcpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
UmVmUHRyPFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNr
ID0gbV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrcy50YWtlKGNhbGxi
YWNrSUQpOworICAgIGlmICghY2FsbGJhY2spIHsKKyAgICAgICAgLy8gRklYTUU6IExvZyBlcnJv
ciBvciBhc3NlcnQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJlc3VsdFN0cmluZyk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKQEAgLTc3MiwyNCArODEw
LDM2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkRXhpdCgpCiB7CiAgICAgQVNTRVJU
KG1fcGFnZUNsaWVudCk7CiAKKyAgICBtX3ZhbGlkID0gZmFsc2U7CisKICAgICBpZiAobV9tYWlu
RnJhbWUpCiAgICAgICAgIG1fdXJsQXRQcm9jZXNzRXhpdCA9IG1fbWFpbkZyYW1lLT51cmwoKTsK
IAotICAgIFZlY3RvcjxSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZTsKLSAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobV9mcmFtZU1hcCwgZnJhbWUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gZnJhbWUuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBmcmFtZVtpXS0+ZGlz
Y29ubmVjdCgpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZXM7Cisg
ICAgY29weVZhbHVlc1RvVmVjdG9yKG1fZnJhbWVNYXAsIGZyYW1lcyk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDAsIHNpemUgPSBmcmFtZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBm
cmFtZXNbaV0tPmRpc2Nvbm5lY3QoKTsKICAgICBtX2ZyYW1lTWFwLmNsZWFyKCk7CiAgICAgbV9t
YWluRnJhbWUgPSAwOwogCiAgICAgbV9wYWdlVGl0bGUgPSBTdHJpbmcoKTsKICAgICBtX3Rvb2xU
aXAgPSBTdHJpbmcoKTsKIAorICAgIFZlY3RvcjxSZWZQdHI8U2NyaXB0UmV0dXJuVmFsdWVDYWxs
YmFjaz4gPiBzY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrczsKKyAgICBjb3B5VmFsdWVzVG9WZWN0
b3IobV9zY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrcywgc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFj
a3MpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gc2NyaXB0UmV0dXJuVmFsdWVDYWxs
YmFja3Muc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBzY3JpcHRSZXR1cm5WYWx1ZUNh
bGxiYWNrc1tpXS0+aW52YWxpZGF0ZSgpOworICAgIG1fc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFj
a3MuY2xlYXIoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25DYWxsYmFjaz4gPiByZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxi
YWNrczsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbkNhbGxiYWNrcywgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFj
a3MpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gcmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb25DYWxsYmFja3Muc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICByZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrc1tpXS0+aW52YWxpZGF0ZSgpOwor
ICAgIG1fcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFja3MuY2xlYXIoKTsK
KwogICAgIG1fY2FuR29Gb3J3YXJkID0gZmFsc2U7CiAgICAgbV9jYW5Hb0JhY2sgPSBmYWxzZTsK
IAotICAgIG1fdmFsaWQgPSBmYWxzZTsKLQogICAgIG1fcGFnZUNsaWVudC0+cHJvY2Vzc0RpZEV4
aXQoKTsKIH0KIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDU4NTQ0
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV2ViUGFnZVByb3h5X2gKIAogI2luY2x1ZGUgIkRyYXdp
bmdBcmVhUHJveHkuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpAQCAtMTE1LDYg
KzExNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKIAogICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIFBhc3NS
ZWZQdHI8U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24oUGFzc1JlZlB0cjxSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrPik7CiAKICAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
V2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJ
RCk7CiAKQEAgLTE3Niw2ICsxNzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZl
RXZlbnQoV2ViRXZlbnQ6OlR5cGUpOwogICAgIHZvaWQgZGlkUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGRpZEdldFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIHVp
bnQ2NF90KTsKIAogICAgIE93blB0cjxQYWdlQ2xpZW50PiBtX3BhZ2VDbGllbnQ7CiAgICAgV2Vi
TG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwpAQCAtMTkxLDcgKzE5NCw4IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6U3RyaW5nIG1fcGFnZVRpdGxlOwogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+ID4gbV9zY3JpcHRSZXR1cm5WYWx1
ZUNhbGxiYWNrczsKLSAgICAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjaz4gPiBtX3JlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uQ2FsbGJhY2tzOworCiAgICAgYm9vbCBtX2NhbkdvQmFjazsKICAgICBib29s
IG1fY2FuR29Gb3J3YXJkOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJl
dmlzaW9uIDU4NTQ0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJXS1BhZ2UuaCIK
KyNpbmNsdWRlICJXS1BhZ2VQcml2YXRlLmgiCiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTEyOCw2ICsxMjksMTEgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlSGlzdG9yeUNsaWVudChXS1BhZ2VSZQogICAgICAgICB0b1dLKHBhZ2VSZWYpLT5pbml0
aWFsaXplSGlzdG9yeUNsaWVudCh3a0NsaWVudCk7CiB9CiAKK3ZvaWQgV0tQYWdlUnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lX2YoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJl
Ziwgdm9pZCogY29udGV4dCwgdm9pZCAoKnJldHVyblZhbHVlQ2FsbGJhY2spKHZvaWQqLCBXS1N0
cmluZ1JlZiksIHZvaWQgKCpkaXNwb3NlQ29udGV4dENhbGxiYWNrKSh2b2lkKikpCit7CisgICAg
dG9XSyhwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvV0soc2NyaXB0UmVmKSwg
U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIHJldHVyblZhbHVlQ2Fs
bGJhY2ssIGRpc3Bvc2VDb250ZXh0Q2FsbGJhY2spKTsKK30KKwogI2lmIF9fQkxPQ0tTX18KIHN0
YXRpYyB2b2lkIGNhbGxCbG9ja0FuZFJlbGVhc2Uodm9pZCogY29udGV4dCwgV0tTdHJpbmdSZWYg
cmVzdWx0VmFsdWUpCiB7CkBAIC0xNDgsMTEgKzE1NCwzMSBAQCB2b2lkIFdLUGFnZVJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShXS1BhCiB9CiAjZW5kaWYKIAotdm9pZCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVfZihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVm
LCB2b2lkKiBjb250ZXh0LCB2b2lkICgqcmV0dXJuVmFsdWVDYWxsYmFjaykodm9pZCosIFdLU3Ry
aW5nUmVmKSwgdm9pZCAoKmRpc3Bvc2VDb250ZXh0Q2FsbGJhY2spKHZvaWQqKSkKK3ZvaWQgV0tQ
YWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25fZihXS1BhZ2VSZWYgcGFnZVJlZiwg
dm9pZCAqY29udGV4dCwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25GdW5j
dGlvbiBjYWxsYmFjaywgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25EaXNw
b3NlRnVuY3Rpb24gZGlzcG9zZUZ1bmN0aW9uKQogewotICAgIHRvV0socGFnZVJlZiktPnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh0b1dLKHNjcmlwdFJlZiksIFNjcmlwdFJldHVyblZhbHVlQ2Fs
bGJhY2s6OmNyZWF0ZShjb250ZXh0LCByZXR1cm5WYWx1ZUNhbGxiYWNrLCBkaXNwb3NlQ29udGV4
dENhbGxiYWNrKSk7CisgICAgdG9XSyhwYWdlUmVmKS0+Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb24oUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6Y3Jl
YXRlKGNvbnRleHQsIGNhbGxiYWNrLCBkaXNwb3NlRnVuY3Rpb24pKTsKIH0KIAorI2lmIF9fQkxP
Q0tTX18KK3N0YXRpYyB2b2lkIGNhbGxSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJs
b2NrQW5kRGlzcG9zZShXS1N0cmluZ1JlZiByZXN1bHRWYWx1ZSwgdm9pZCogY29udGV4dCkKK3sK
KyAgICBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJsb2NrIGJsb2NrID0g
KFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmxvY2spY29udGV4dDsKKyAg
ICBibG9jayhyZXN1bHRWYWx1ZSk7CisgICAgQmxvY2tfcmVsZWFzZShibG9jayk7Cit9CisKK3N0
YXRpYyB2b2lkIGRpc3Bvc2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJsb2NrKHZv
aWQqIGNvbnRleHQpCit7CisgICAgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b25CbG9jayBibG9jayA9IChXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJs
b2NrKWNvbnRleHQ7CisgICAgQmxvY2tfcmVsZWFzZShibG9jayk7Cit9CisKK3ZvaWQgV0tQYWdl
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
ZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmxvY2sgYmxvY2spCit7CisgICAgV0tQ
YWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25fZihwYWdlUmVmLCBCbG9ja19jb3B5
KGJsb2NrKSwgY2FsbFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQmxvY2tBbmREaXNw
b3NlLCBkaXNwb3NlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CbG9jayk7Cit9Cisj
ZW5kaWYKKwogV0tQYWdlUmVmIFdLUGFnZVJldGFpbihXS1BhZ2VSZWYgcGFnZVJlZikKIHsKICAg
ICB0b1dLKHBhZ2VSZWYpLT5yZWYoKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLUGFnZVByaXZhdGVfaAorI2RlZmluZSBXS1BhZ2VQcml2YXRlX2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uKShXS1N0cmluZ1Jl
Ziwgdm9pZCopOwordHlwZWRlZiB2b2lkICgqV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25EaXNwb3NlRnVuY3Rpb24pKHZvaWQqKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uX2YoV0tQYWdlUmVmIHBhZ2UsIHZvaWQgKmNv
bnRleHQsIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRnVuY3Rpb24gZnVu
Y3Rpb24sIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uRGlzcG9zZUZ1bmN0
aW9uIGRpc3Bvc2VGdW5jdGlvbik7CisKKyNpZiBfX0JMT0NLU19fCit0eXBlZGVmIHZvaWQgKF5X
S1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkJsb2NrKShXS1N0cmluZ1JlZik7
CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihX
S1BhZ2VSZWYgcGFnZSwgV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25CbG9j
ayBibG9jayk7CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLUGFnZVByaXZhdGVfaCAqLwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU4NTQ0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDkgQEAK
IAkJQkMxMTFCNjQxMTJGNjM4MzAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTFCNjEx
MTJGNjM4MzAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oICovOyB9OwogCQlC
QzExMUI2NTExMkY2MzgzMDAzMzdCQUIgLyogV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTFCNjIxMTJGNjM4
MzAwMzM3QkFCIC8qIFdlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCAqLzsgfTsKIAkJQkMxMzFCQzkx
MTcyNkMyODAwQjY5NzI3IC8qIENvcmVJUENNZXNzYWdlS2luZHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTMxQkM4MTE3MjZDMjgwMEI2OTcyNyAv
KiBDb3JlSVBDTWVzc2FnZUtpbmRzLmggKi87IH07CisJCUJDMTc3NDY1MTE4QjlGRjQwMDdEOUU5
QSAvKiBXS1BhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzE3NzQ2NDExOEI5RkY0MDA3RDlFOUEgLyogV0tQYWdlUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMTc3NDY4
MTE4QkEwODYwMDdEOUU5QSAvKiBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MTc3NDY2MTE4QkEwODYwMDdEOUU5QSAvKiBSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJQkMxNzc0NjkxMThCQTA4NjAwN0Q5RTlBIC8qIFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTc3NDY3MTE4QkEwODYwMDdEOUU5QSAvKiBS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrLmggKi87IH07CiAJCUJDMUE3
QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBXZWJQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUE3QzU3MTEzNkUxOUMwMEZCNzE2
NyAvKiBXZWJQcm9jZXNzTGF1bmNoZXIuaCAqLzsgfTsKIAkJQkMxREQ3QjIxMTREQzM5NjAwNUFE
QUYzIC8qIFdlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxREQ3QjExMTREQzM5NjAwNUFEQUYzIC8q
IFdlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oICovOyB9OwogCQlCQzIwRUJCMDExNkVF
QjA4MDAwOTRBNTAgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjBFQkFFMTE2RUVCMDgwMDA5NEE1MCAvKiBXS1N0cmluZy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTI4OCw2ICsy
OTEsOSBAQAogCQlCQzExMUI2MTExMkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZVByb3h5TWVzc2Fn
ZUtpbmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VQcm94eU1l
c3NhZ2VLaW5kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzExMUI2MjExMkY2
MzgzMDAzMzdCQUIgLyogV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDMTMxQkM4MTE3MjZDMjgwMEI2OTcyNyAvKiBDb3JlSVBDTWVzc2Fn
ZUtpbmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVJUENNZXNzYWdl
S2luZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxNzc0NjQxMThCOUZGNDAw
N0Q5RTlBIC8qIFdLUGFnZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tQYWdlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzE3NzQ2
NjExOEJBMDg2MDA3RDlFOUEgLyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMxNzc0NjcxMThCQTA4NjAwN0Q5RTlBIC8qIFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzFBN0M1NzExMzZFMTlDMDBGQjcxNjcgLyogV2ViUHJvY2Vzc0xh
dW5jaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NMYXVu
Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFERDdCMTExNERDMzk2MDA1
QURBRjMgLyogV2ViQ29yZVR5cGVBcmd1bWVudE1hcnNoYWxsaW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVUeXBlQXJndW1lbnRNYXJzaGFsbGluZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwRUJBRTExNkVFQjA4MDAwOTRBNTAgLyogV0tT
dHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMCw2ICs2MDYsOCBAQAogCQkJCUJDMjY1MjE1
MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuaCAqLywKIAkJ
CQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovLAogCQkJCUJDNTk3
MDc0MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLywKKwkJCQlCQzE3NzQ2NjEx
OEJBMDg2MDA3RDlFOUEgLyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFj
ay5jcHAgKi8sCisJCQkJQkMxNzc0NjcxMThCQTA4NjAwN0Q5RTlBIC8qIFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAz
MzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRG
NzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQlCQ0Q1OTBGMzExMjlG
NTVCMDBFQzhDMjMgLyogU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjay5jcHAgKi8sCkBAIC02NjIs
NiArNjcwLDcgQEAKIAkJCQlCQ0Y2OUZBNzExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9u
RGF0YS5oICovLAogCQkJCUJDRDU5N0Q0MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuY3BwICov
LAogCQkJCUJDRDU5N0Q1MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuaCAqLywKKwkJCQlCQzE3
NzQ2NDExOEI5RkY0MDA3RDlFOUEgLyogV0tQYWdlUHJpdmF0ZS5oICovLAogCQkJCUJDRUU5OENB
MTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuY3BwICovLAogCQkJCUJDRUU5OENC
MTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuaCAqLywKIAkJCQlCQ0Q1OTdDRjEx
MkI1NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5jcHAgKi8sCkBAIC05MTIsNiArOTIxLDgg
QEAKIAkJCQlCQzVGN0JCNTExODIzNzZDMDA1MkMwMkMgLyogRHJhd2luZ0FyZWFVcGRhdGVDaHVu
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdp
bmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjY1MjE5MTE4MjYwODEwMDI0M0Ux
MiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1bmsuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
MTc3NDY1MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzE3NzQ2OTExOEJBMDg2MDA3RDlFOUEgLyogUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMDY2LDYgKzEwNzcsNyBAQAog
CQkJCUJDMjY1MUY2MTE4MjVFRjgwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5VXBkYXRlQ2h1
bmtNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIgLyog
RHJhd2luZ0FyZWFQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzI2NTIxODExODI2MDgx
MDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJDMTc3NDY4MTE4QkEwODYwMDdEOUU5QSAvKiBSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDU4NTQ0KQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0yODgsNiArMjg5LDEyIEBAIHZvaWQgV2ViUGFnZTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKGMKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lLCBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4ocmVzdWx0U3RyaW5nLCBjYWxsYmFja0lEKSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24odWlu
dDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0U3RyaW5nID0gZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIFJlbmRlckFzVGV4dEJlaGF2
aW9yTm9ybWFsKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
V2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24sIG1fcGFnZUlELCBDb3JlSVBDOjpJbihyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKK30K
Kwogdm9pZCBXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSkKIHsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRF
bmFibGVkKHN0b3JlLmphdmFTY3JpcHRFbmFibGVkKTsKQEAgLTQxMyw2ICs0MjAsMTMgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOgogICAgICAgICAgICAgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VNZXNzYWdlOjpHZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbjogeworICAgICAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RDsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmRlY29kZShjYWxsYmFja0lEKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihjYWxsYmFja0lEKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2UgV2ViUGFnZU1lc3NhZ2U6OkNsb3NlOiB7CiAgICAgICAgICAgICBjbG9zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiA1ODU0NCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3aGVlbEV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZvaWQga2V5
RXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bih1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKFdlYkZyYW1lKiwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbik7Cg==
</data>
<flag name="review"
          id="38895"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>