<?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>14726</bug_id>
          
          <creation_ts>2007-07-23 11:37:48 -0700</creation_ts>
          <short_desc>[gtk] API design. Mapping the WebView delegates to signals.</short_desc>
          <delta_ts>2007-10-03 10:35:10 -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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>14725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>christian</cc>
    
    <cc>jmalonzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3947</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-23 11:37:48 -0700</bug_when>
    <thetext>It is important to design a suitable API for the WebKitGtk port. The primary use case should be browsing and displaying content. The secondary use case will be editing.

The API should follow WebView of the Mac/Windows port both in design and naming of functions. We are free to name the methods slightly different and insert as many &apos;_&apos; as we want.

WebView is using delegates. For the WebKitGtk port these will be mapped to signals. For the informal signals the only decision we have to make is if we want to allow having default handlers in the class of WebKitGtkPage and WebKitGtkFrame.

For delegates like the WebPolicyDelegate we should not use signals with return values but make the decisionListener some kind of GType (boxed,GObject...) that gets passed to the handlers as part of the signal. The first one calling the decisionListener makes the decision.

For delegates like the WebFrameLoadDelegate (responsible for assigning ids) we should consider using return values or pass the &apos;result&apos; as pointer in the signal. The issue to be discussed is who should be able to stop the emission of the signal, who should be able to make the decision. The first one returning a result, the last one setting a result in the struct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3934</commentid>
    <comment_count>1</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-23 12:04:08 -0700</bug_when>
    <thetext>Rename the symbols from webkit_gtk to web_ and the files from webkitgtk to web (priority :fix it!!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3923</commentid>
    <comment_count>2</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-23 13:14:35 -0700</bug_when>
    <thetext>Add the Gtk keyword, even to the curl bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3508</commentid>
    <comment_count>3</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2007-07-29 09:24:44 -0700</bug_when>
    <thetext>&gt; Rename the symbols from webkit_gtk to web_ and the files from webkitgtk to web

Please do *not* change it to web_. That would be too generic and therefore unfair against other projects. Think of web_page_new for instance. It might very easily clash with other names.

Instead my suggestion for the scheme would be either webkit_foo or gtk_webkit_foo. I tend to be in favor of gtk_webkit_foo because WebKit is a cross-platform toolkit and omitting the gtk suggests a gtk-specific toolkit imho.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57719</commentid>
    <comment_count>4</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-10-03 05:46:40 -0700</bug_when>
    <thetext>*** Bug 15357 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57724</commentid>
    <comment_count>5</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-10-03 06:12:30 -0700</bug_when>
    <thetext>web_ is not a popular option with the developers I&apos;ve spoken with, due to namespace pollution. wk_ was also suggested but webkit_ seems to be the most sensible option. I wonder now whether the CamelCased form of this namespace should be Webkit or WebKit (ie. WebkitPage vs. WebKitPage)..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57725</commentid>
    <comment_count>6</comment_count>
      <attachid>16520</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-10-03 07:03:39 -0700</bug_when>
    <thetext>Created attachment 16520
Rename the Gtk+ port API namespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57739</commentid>
    <comment_count>7</comment_count>
      <attachid>16520</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-10-03 09:41:56 -0700</bug_when>
    <thetext>Comment on attachment 16520
Rename the Gtk+ port API namespace

If this is truly just a rename as claimed, rs=me. We should rename the files at some point as well (webkitgtkpage.cpp -&gt; webkitpage.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57743</commentid>
    <comment_count>8</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-10-03 10:35:10 -0700</bug_when>
    <thetext>Fixed in r26022</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16520</attachid>
            <date>2007-10-03 07:03:39 -0700</date>
            <delta_ts>2007-10-03 09:41:56 -0700</delta_ts>
            <desc>Rename the Gtk+ port API namespace</desc>
            <filename>webkit-gtk-rename-2.patch</filename>
            <type>text/plain</type>
            <size>76200</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjAxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDctMTAtMDMgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI2CisgICAgICAgIFtndGtdIEFQSSBk
ZXNpZ24uIE1hcHBpbmcgdGhlIFdlYlZpZXcgZGVsZWdhdGVzIHRvIHNpZ25hbHMuCisKKyAgICAg
ICAgQ2hhbmdlIHRoZSBBUEkgbmFtZXNwYWNlIG9mIHRoZSBHdGsrIHBvcnQgZnJvbSAnV2ViS2l0
R3RrJyB0byAnV2ViS2l0Jy4KKworICAgICAgICAqIFdlYkNvcmUucHJvOgorCiAyMDA3LTEwLTAz
ICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFNpZ25lZCBvZmYg
Ynkgb2xsaWVqLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAyNjAxNSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTE1NDQsNyArMTU0NCw3IEBAIGd0ay1wb3J0IHsKICAgICB9CiAK
ICAgICBHRU5NQVJTSEFMUyA9IC4uL1dlYktpdC9ndGsvQXBpL3dlYmtpdGd0ay1tYXJzaGFsLmxp
c3QKLSAgICBHRU5NQVJTSEFMU19QUkVGSVggPSB3ZWJraXRfZ3RrX21hcnNoYWwKKyAgICBHRU5N
QVJTSEFMU19QUkVGSVggPSB3ZWJraXRfbWFyc2hhbAogCiAgICAgIwogICAgICMgaW50ZWdyYXRl
IGdsaWItZ2VubWFyc2hhbCBhcyBhZGRpdGlvbmFsIGNvbXBpbGVyCkluZGV4OiBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
MjYwMTYpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDUzIEBACisyMDA3LTEwLTAzICBBbHAgVG9rZXIgIDxhbHBAYXRva2VyLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyNgorICAgICAgICBbZ3RrXSBBUEkgZGVzaWduLiBN
YXBwaW5nIHRoZSBXZWJWaWV3IGRlbGVnYXRlcyB0byBzaWduYWxzLgorCisgICAgICAgIENoYW5n
ZSB0aGUgQVBJIG5hbWVzcGFjZSBvZiB0aGUgR3RrKyBwb3J0IGZyb20gJ1dlYktpdEd0aycgdG8g
J1dlYktpdCcuCisKKyAgICAgICAgKiBBcGkvd2Via2l0Z3RrZGVmaW5lcy5oOgorICAgICAgICAq
IEFwaS93ZWJraXRndGtmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3dlYmtpdGd0a2ZyYW1lLmg6
CisgICAgICAgICogQXBpL3dlYmtpdGd0a2dsb2JhbC5jcHA6CisgICAgICAgICogQXBpL3dlYmtp
dGd0a2dsb2JhbC5oOgorICAgICAgICAqIEFwaS93ZWJraXRndGtuZXR3b3JrcmVxdWVzdC5oOgor
ICAgICAgICAqIEFwaS93ZWJraXRndGtwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvd2Via2l0Z3Rr
cGFnZS5oOgorICAgICAgICAqIEFwaS93ZWJraXRndGtwcml2YXRlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6YXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpnZXRGcmFtZUZyb21QYWdlKToKKyAgICAgICAgKFdlYktpdDo6Z2V0UGFnZUZyb21GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAg
ICAqIEFwaS93ZWJraXRndGtwcml2YXRlLmg6CisgICAgICAgICogQXBpL3dlYmtpdGd0a3NldHRp
bmdzLmNwcDoKKyAgICAgICAgKiBBcGkvd2Via2l0Z3Rrc2V0dGluZ3MuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OkNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjphZGRNZXNzYWdl
VG9Db25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0
QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25m
aXJtKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp3ZWJQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVk
aXRvckNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbik6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnQ6OndlYkZyYW1lKToKKwogMjAwNy0wOS0yOSAgTGFycyBMaW5kbmVyICA8bGFycy5s
aW5kbmVyQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtLgpJbmRleDogV2Vi
S2l0L2d0ay9BcGkvd2Via2l0Z3RrZGVmaW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
QXBpL3dlYmtpdGd0a2RlZmluZXMuaAkocmV2aXNpb24gMjYwMTUpCisrKyBXZWJLaXQvZ3RrL0Fw
aS93ZWJraXRndGtkZWZpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwzMiBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdFQktJVF9HVEtfREVGSU5FU19ICi0jZGVmaW5l
IFdFQktJVF9HVEtfREVGSU5FU19ICisjaWZuZGVmIFdFQktJVF9ERUZJTkVTX0gKKyNkZWZpbmUg
V0VCS0lUX0RFRklORVNfSAogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCi10eXBlZGVmIHN0cnVjdCBf
V2ViS2l0R3RrRnJhbWUgV2ViS2l0R3RrRnJhbWU7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3Rr
RnJhbWVDbGFzcyBXZWJLaXRHdGtGcmFtZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEZy
YW1lIFdlYktpdEZyYW1lOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEZyYW1lQ2xhc3MgV2ViS2l0
RnJhbWVDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEd0a0ZyYW1lRGF0YSBXZWJLaXRH
dGtGcmFtZURhdGE7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3RrTmV0d29ya1JlcXVlc3QgV2Vi
S2l0R3RrTmV0d29ya1JlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RnJhbWVEYXRhIFdl
YktpdEZyYW1lRGF0YTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXROZXR3b3JrUmVxdWVzdCBXZWJL
aXROZXR3b3JrUmVxdWVzdDsKIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEd0a1BhZ2UgV2ViS2l0
R3RrUGFnZTsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRHdGtQYWdlQ2xhc3MgV2ViS2l0R3RrUGFn
ZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBhZ2UgV2ViS2l0UGFnZTsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRQYWdlQ2xhc3MgV2ViS2l0UGFnZUNsYXNzOwogCiAjaWZkZWYgR19PU19X
SU4zMgogICAgICNpZmRlZiBCVUlMRElOR19XRUJLSVQKLSAgICAgICAgI2RlZmluZSBXRUJLSVRf
R1RLX0FQSSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyAgICAgICAgI2RlZmluZSBXRUJLSVRfQVBJ
IF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogICAgICNlbHNlCi0gICAgICAgICNkZWZpbmUgV0VCS0lU
X0dUS19BUEkgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgICAgICNkZWZpbmUgV0VCS0lUX0FQ
SSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICAgICAjZW5kaWYKICNlbHNlCi0gICAgI2RlZmluZSBX
RUJLSVRfR1RLX0FQSSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorICAg
ICNkZWZpbmUgV0VCS0lUX0FQSSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KQogI2VuZGlmCiAKLSNpZm5kZWYgV0VCS0lUX0dUS19BUEkKLSNkZWZpbmUgV0VCS0lUX0dUS19B
UEkKKyNpZm5kZWYgV0VCS0lUX0FQSQorI2RlZmluZSBXRUJLSVRfQVBJCiAjZW5kaWYKIAogI2Vu
ZGlmCkluZGV4OiBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtmcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrZnJhbWUuY3BwCShyZXZpc2lvbiAyNjAxNSkKKysr
IFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogZXh0ZXJuICJDIiB7CiAKLWV4
dGVybiB2b2lkIHdlYmtpdF9ndGtfbWFyc2hhbF9WT0lEX19TVFJJTkdfU1RSSU5HIChHQ2xvc3Vy
ZSogICAgIGNsb3N1cmUsCitleHRlcm4gdm9pZCB3ZWJraXRfbWFyc2hhbF9WT0lEX19TVFJJTkdf
U1RSSU5HIChHQ2xvc3VyZSogICAgIGNsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlKiAgICAgICByZXR1cm5fdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQg
ICAgICAgICBuX3BhcmFtX3ZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUqIHBhcmFtX3ZhbHVlcywKQEAgLTU1LDMx
ICs1NSwzMSBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05BTAogfTsKIAotc3RhdGljIGd1aW50IHdl
YmtpdF9ndGtfZnJhbWVfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CitzdGF0aWMgZ3Vp
bnQgd2Via2l0X2ZyYW1lX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCi1zdGF0aWMg
dm9pZCB3ZWJraXRfZ3RrX2ZyYW1lX3JlYWxfdGl0bGVfY2hhbmdlZChXZWJLaXRHdGtGcmFtZSog
ZnJhbWUsIGdjaGFyKiB0aXRsZSwgZ2NoYXIqIGxvY2F0aW9uKTsKK3N0YXRpYyB2b2lkIHdlYmtp
dF9mcmFtZV9yZWFsX3RpdGxlX2NoYW5nZWQoV2ViS2l0RnJhbWUqIGZyYW1lLCBnY2hhciogdGl0
bGUsIGdjaGFyKiBsb2NhdGlvbik7CiAKLUdfREVGSU5FX1RZUEUoV2ViS2l0R3RrRnJhbWUsIHdl
YmtpdF9ndGtfZnJhbWUsIEdfVFlQRV9PQkpFQ1QpCitHX0RFRklORV9UWVBFKFdlYktpdEZyYW1l
LCB3ZWJraXRfZnJhbWUsIEdfVFlQRV9PQkpFQ1QpCiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9ndGtf
ZnJhbWVfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQorc3RhdGljIHZvaWQgd2Via2l0X2ZyYW1l
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICBXZWJLaXRHdGtGcmFtZVByaXZhdGUq
IHByaXZhdGVEYXRhID0gV0VCS0lUX0dUS19GUkFNRV9HRVRfUFJJVkFURShXRUJLSVRfR1RLX0ZS
QU1FKG9iamVjdCkpOworICAgIFdlYktpdEZyYW1lUHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJL
SVRfRlJBTUVfR0VUX1BSSVZBVEUoV0VCS0lUX0ZSQU1FKG9iamVjdCkpOwogICAgIHByaXZhdGVE
YXRhLT5mcmFtZS0+bG9hZGVyKCktPmNhbmNlbEFuZENsZWFyKCk7CiAgICAgZ19mcmVlKHByaXZh
dGVEYXRhLT50aXRsZSk7CiAgICAgZ19mcmVlKHByaXZhdGVEYXRhLT5sb2NhdGlvbik7CiAgICAg
ZGVsZXRlIHByaXZhdGVEYXRhLT5mcmFtZTsKIAotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9n
dGtfZnJhbWVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfZnJhbWVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAot
c3RhdGljIHZvaWQgd2Via2l0X2d0a19mcmFtZV9jbGFzc19pbml0KFdlYktpdEd0a0ZyYW1lQ2xh
c3MqIGZyYW1lQ2xhc3MpCitzdGF0aWMgdm9pZCB3ZWJraXRfZnJhbWVfY2xhc3NfaW5pdChXZWJL
aXRGcmFtZUNsYXNzKiBmcmFtZUNsYXNzKQogewotICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0
ZShmcmFtZUNsYXNzLCBzaXplb2YoV2ViS2l0R3RrRnJhbWVQcml2YXRlKSk7CisgICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKGZyYW1lQ2xhc3MsIHNpemVvZihXZWJLaXRGcmFtZVByaXZhdGUp
KTsKIAogICAgIC8qCiAgICAgICogc2lnbmFscwogICAgICAqLwotICAgIHdlYmtpdF9ndGtfZnJh
bWVfc2lnbmFsc1tDTEVBUkVEXSA9IGdfc2lnbmFsX25ldygiY2xlYXJlZCIsCisgICAgd2Via2l0
X2ZyYW1lX3NpZ25hbHNbQ0xFQVJFRF0gPSBnX3NpZ25hbF9uZXcoImNsZWFyZWQiLAogICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZnJhbWVDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25h
bEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCiAgICAgICAgICAg
ICAwLApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZ3RrX2ZyYW1lX2NsYXNz
X2luaXQoCiAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9JRCwKICAgICAg
ICAgICAgIEdfVFlQRV9OT05FLCAwKTsKIAotICAgIHdlYmtpdF9ndGtfZnJhbWVfc2lnbmFsc1tM
T0FEX0RPTkVdID0gZ19zaWduYWxfbmV3KCJsb2FkX2RvbmUiLAorICAgIHdlYmtpdF9mcmFtZV9z
aWduYWxzW0xPQURfRE9ORV0gPSBnX3NpZ25hbF9uZXcoImxvYWRfZG9uZSIsCiAgICAgICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhmcmFtZUNsYXNzKSwKICAgICAgICAgICAgIChHU2lnbmFsRmxh
Z3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwKICAgICAgICAgICAgIDAs
CkBAIC05OCw1MiArOTgsNTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X2d0a19mcmFtZV9jbGFzc19p
bml0KAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAgICBHX1RZUEVfQk9P
TEVBTik7CiAKLSAgICB3ZWJraXRfZ3RrX2ZyYW1lX3NpZ25hbHNbVElUTEVfQ0hBTkdFRF0gPSBn
X3NpZ25hbF9uZXcoInRpdGxlX2NoYW5nZWQiLAorICAgIHdlYmtpdF9mcmFtZV9zaWduYWxzW1RJ
VExFX0NIQU5HRURdID0gZ19zaWduYWxfbmV3KCJ0aXRsZV9jaGFuZ2VkIiwKICAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKGZyYW1lQ2xhc3MpLAogICAgICAgICAgICAgKEdTaWduYWxGbGFn
cykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAotICAgICAgICAgICAgR19T
VFJVQ1RfT0ZGU0VUKFdlYktpdEd0a0ZyYW1lQ2xhc3MsIHRpdGxlX2NoYW5nZWQpLAorICAgICAg
ICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdEZyYW1lQ2xhc3MsIHRpdGxlX2NoYW5nZWQpLAog
ICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICB3ZWJraXRf
Z3RrX21hcnNoYWxfVk9JRF9fU1RSSU5HX1NUUklORywKKyAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX1ZPSURfX1NUUklOR19TVFJJTkcsCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMiwKICAg
ICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIEdfVFlQRV9TVFJJTkcpOwogCi0gICAgd2Via2l0X2d0
a19mcmFtZV9zaWduYWxzW0hPVkVSSU5HX09WRVJfTElOS10gPSBnX3NpZ25hbF9uZXcoImhvdmVy
aW5nX292ZXJfbGluayIsCisgICAgd2Via2l0X2ZyYW1lX3NpZ25hbHNbSE9WRVJJTkdfT1ZFUl9M
SU5LXSA9IGdfc2lnbmFsX25ldygiaG92ZXJpbmdfb3Zlcl9saW5rIiwKICAgICAgICAgICAgIEdf
VFlQRV9GUk9NX0NMQVNTKGZyYW1lQ2xhc3MpLAogICAgICAgICAgICAgKEdTaWduYWxGbGFncyko
R19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAogICAgICAgICAgICAgMCwKICAg
ICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgd2Via2l0X2d0
a19tYXJzaGFsX1ZPSURfX1NUUklOR19TVFJJTkcsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hh
bF9WT0lEX19TVFJJTkdfU1RSSU5HLAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDIsCiAgICAg
ICAgICAgICBHX1RZUEVfU1RSSU5HLCBHX1RZUEVfU1RSSU5HKTsKIAotICAgIGZyYW1lQ2xhc3Mt
PnRpdGxlX2NoYW5nZWQgPSB3ZWJraXRfZ3RrX2ZyYW1lX3JlYWxfdGl0bGVfY2hhbmdlZDsKKyAg
ICBmcmFtZUNsYXNzLT50aXRsZV9jaGFuZ2VkID0gd2Via2l0X2ZyYW1lX3JlYWxfdGl0bGVfY2hh
bmdlZDsKIAogICAgIC8qCiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9k
cwogICAgICAqLwotICAgIEdfT0JKRUNUX0NMQVNTKGZyYW1lQ2xhc3MpLT5maW5hbGl6ZSA9IHdl
YmtpdF9ndGtfZnJhbWVfZmluYWxpemU7CisgICAgR19PQkpFQ1RfQ0xBU1MoZnJhbWVDbGFzcykt
PmZpbmFsaXplID0gd2Via2l0X2ZyYW1lX2ZpbmFsaXplOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfZ3RrX2ZyYW1lX3JlYWxfdGl0bGVfY2hhbmdlZChXZWJLaXRHdGtGcmFtZSogZnJhbWUsIGdj
aGFyKiB0aXRsZSwgZ2NoYXIqIGxvY2F0aW9uKQorc3RhdGljIHZvaWQgd2Via2l0X2ZyYW1lX3Jl
YWxfdGl0bGVfY2hhbmdlZChXZWJLaXRGcmFtZSogZnJhbWUsIGdjaGFyKiB0aXRsZSwgZ2NoYXIq
IGxvY2F0aW9uKQogewotICAgIFdlYktpdEd0a0ZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VC
S0lUX0dUS19GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7CisgICAgV2ViS2l0RnJhbWVQcml2YXRl
KiBmcmFtZURhdGEgPSBXRUJLSVRfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwogICAgIGdfZnJl
ZShmcmFtZURhdGEtPnRpdGxlKTsKICAgICBnX2ZyZWUoZnJhbWVEYXRhLT5sb2NhdGlvbik7CiAg
ICAgZnJhbWVEYXRhLT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlKTsKICAgICBmcmFtZURhdGEtPmxv
Y2F0aW9uID0gZ19zdHJkdXAobG9jYXRpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZ3Rr
X2ZyYW1lX2luaXQoV2ViS2l0R3RrRnJhbWUqIGZyYW1lKQorc3RhdGljIHZvaWQgd2Via2l0X2Zy
YW1lX2luaXQoV2ViS2l0RnJhbWUqIGZyYW1lKQogewogfQogCi1HT2JqZWN0KiB3ZWJraXRfZ3Rr
X2ZyYW1lX25ldyhXZWJLaXRHdGtQYWdlKiBwYWdlKQorR09iamVjdCogd2Via2l0X2ZyYW1lX25l
dyhXZWJLaXRQYWdlKiBwYWdlKQogewotICAgIFdlYktpdEd0a0ZyYW1lKiBmcmFtZSA9IFdFQktJ
VF9HVEtfRlJBTUUoZ19vYmplY3RfbmV3KFdFQktJVF9HVEtfVFlQRV9GUkFNRSwgTlVMTCkpOwot
ICAgIFdlYktpdEd0a0ZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX0dUS19GUkFNRV9H
RVRfUFJJVkFURShmcmFtZSk7Ci0gICAgV2ViS2l0R3RrUGFnZVByaXZhdGUqIHBhZ2VEYXRhID0g
V0VCS0lUX0dUS19QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOworICAgIFdlYktpdEZyYW1lKiBmcmFt
ZSA9IFdFQktJVF9GUkFNRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRlJBTUUsIE5VTEwpKTsK
KyAgICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9GUkFNRV9HRVRfUFJJ
VkFURShmcmFtZSk7CisgICAgV2ViS2l0UGFnZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX1BB
R0VfR0VUX1BSSVZBVEUocGFnZSk7CiAKICAgICBmcmFtZURhdGEtPmNsaWVudCA9IG5ldyBXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKTsKICAgICBmcmFtZURhdGEtPmZyYW1lID0gbmV3
IEZyYW1lKHBhZ2VEYXRhLT5wYWdlLCAwLCBmcmFtZURhdGEtPmNsaWVudCk7CkBAIC0xNjEsMTEg
KzE2MSwxMSBAQCBHT2JqZWN0KiB3ZWJraXRfZ3RrX2ZyYW1lX25ldyhXZWJLaXRHdGtQCiAgICAg
cmV0dXJuIEdfT0JKRUNUKGZyYW1lKTsKIH0KIAotR09iamVjdCogd2Via2l0X2d0a19mcmFtZV9p
bml0X3dpdGhfcGFnZShXZWJLaXRHdGtQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IGVsZW1lbnQpCitHT2JqZWN0KiB3ZWJraXRfZnJhbWVfaW5pdF93aXRoX3BhZ2UoV2ViS2l0UGFn
ZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBlbGVtZW50KQogewotICAgIFdlYktpdEd0
a0ZyYW1lKiBmcmFtZSA9IFdFQktJVF9HVEtfRlJBTUUoZ19vYmplY3RfbmV3KFdFQktJVF9HVEtf
VFlQRV9GUkFNRSwgTlVMTCkpOwotICAgIFdlYktpdEd0a0ZyYW1lUHJpdmF0ZSogZnJhbWVEYXRh
ID0gV0VCS0lUX0dUS19GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7Ci0gICAgV2ViS2l0R3RrUGFn
ZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOwor
ICAgIFdlYktpdEZyYW1lKiBmcmFtZSA9IFdFQktJVF9GUkFNRShnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfRlJBTUUsIE5VTEwpKTsKKyAgICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9
IFdFQktJVF9GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7CisgICAgV2ViS2l0UGFnZVByaXZhdGUq
IHBhZ2VEYXRhID0gV0VCS0lUX1BBR0VfR0VUX1BSSVZBVEUocGFnZSk7CiAKICAgICBmcmFtZURh
dGEtPmNsaWVudCA9IG5ldyBXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lKTsKICAgICBm
cmFtZURhdGEtPmZyYW1lID0gbmV3IEZyYW1lKHBhZ2VEYXRhLT5wYWdlLCBlbGVtZW50LCBmcmFt
ZURhdGEtPmNsaWVudCk7CkBAIC0xODAsMjIgKzE4MCwyMiBAQCBHT2JqZWN0KiB3ZWJraXRfZ3Rr
X2ZyYW1lX2luaXRfd2l0aF9wYWdlCiAgICAgcmV0dXJuIEdfT0JKRUNUKGZyYW1lKTsKIH0gCiAK
LVdlYktpdEd0a1BhZ2UqCi13ZWJraXRfZ3RrX2ZyYW1lX2dldF9wYWdlKFdlYktpdEd0a0ZyYW1l
KiBmcmFtZSkKK1dlYktpdFBhZ2UqCit3ZWJraXRfZnJhbWVfZ2V0X3BhZ2UoV2ViS2l0RnJhbWUq
IGZyYW1lKQogewotICAgIFdlYktpdEd0a0ZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lU
X0dUS19GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7CisgICAgV2ViS2l0RnJhbWVQcml2YXRlKiBm
cmFtZURhdGEgPSBXRUJLSVRfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwogICAgIHJldHVybiBm
cmFtZURhdGEtPnBhZ2U7CiB9CiAKLWdjaGFyKiB3ZWJraXRfZ3RrX2ZyYW1lX2dldF90aXRsZShX
ZWJLaXRHdGtGcmFtZSogZnJhbWUpCitnY2hhciogd2Via2l0X2ZyYW1lX2dldF90aXRsZShXZWJL
aXRGcmFtZSogZnJhbWUpCiB7Ci0gICAgV2ViS2l0R3RrRnJhbWVQcml2YXRlKiBmcmFtZURhdGEg
PSBXRUJLSVRfR1RLX0ZSQU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKKyAgICBXZWJLaXRGcmFtZVBy
aXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9GUkFNRV9HRVRfUFJJVkFURShmcmFtZSk7CiAgICAg
cmV0dXJuIGZyYW1lRGF0YS0+dGl0bGU7CiB9CiAKLWdjaGFyKiB3ZWJraXRfZ3RrX2ZyYW1lX2dl
dF9sb2NhdGlvbihXZWJLaXRHdGtGcmFtZSogZnJhbWUpCitnY2hhciogd2Via2l0X2ZyYW1lX2dl
dF9sb2NhdGlvbihXZWJLaXRGcmFtZSogZnJhbWUpCiB7Ci0gICAgV2ViS2l0R3RrRnJhbWVQcml2
YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfR1RLX0ZSQU1FX0dFVF9QUklWQVRFKGZyYW1lKTsKKyAg
ICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9GUkFNRV9HRVRfUFJJVkFU
RShmcmFtZSk7CiAgICAgcmV0dXJuIGZyYW1lRGF0YS0+bG9jYXRpb247CiB9CiAKSW5kZXg6IFdl
YktpdC9ndGsvQXBpL3dlYmtpdGd0a2ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9B
cGkvd2Via2l0Z3RrZnJhbWUuaAkocmV2aXNpb24gMjYwMTUpCisrKyBXZWJLaXQvZ3RrL0FwaS93
ZWJraXRndGtmcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV0VCS0lUX0dUS19GUkFNRV9ICi0jZGVmaW5lIFdFQktJVF9H
VEtfRlJBTUVfSAorI2lmbmRlZiBXRUJLSVRfRlJBTUVfSAorI2RlZmluZSBXRUJLSVRfRlJBTUVf
SAogCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDxnZGsvZ2RrLmg+CkBAIC0z
Niw2OCArMzYsNjggQEAKIAogR19CRUdJTl9ERUNMUwogCi0jZGVmaW5lIFdFQktJVF9HVEtfVFlQ
RV9GUkFNRSAgICAgICAgICAgICh3ZWJraXRfZ3RrX2ZyYW1lX2dldF90eXBlKCkpCi0jZGVmaW5l
IFdFQktJVF9HVEtfRlJBTUUob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
Q0FTVCgob2JqKSwgV0VCS0lUX0dUS19UWVBFX0ZSQU1FLCBXZWJLaXRHdGtGcmFtZSkpCi0jZGVm
aW5lIFdFQktJVF9HVEtfRlJBTUVfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX0dUS19UWVBFX0ZSQU1FLCBXZWJLaXRHdGtGcmFtZUNsYXNz
KSkKLSNkZWZpbmUgV0VCS0lUX0dUS19JU19GUkFNRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfR1RLX1RZUEVfRlJBTUUpKQotI2RlZmluZSBX
RUJLSVRfR1RLX0lTX0ZSQU1FX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9HVEtfVFlQRV9GUkFNRSkpCi0jZGVmaW5lIFdFQktJVF9HVEtfRlJB
TUVfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX0dUS19UWVBFX0ZSQU1FLCBXZWJLaXRHdGtGcmFtZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfRlJBTUUgICAgICAgICAgICAod2Via2l0X2ZyYW1lX2dldF90eXBlKCkpCisjZGVmaW5l
IFdFQktJVF9GUkFNRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
KChvYmopLCBXRUJLSVRfVFlQRV9GUkFNRSwgV2ViS2l0RnJhbWUpKQorI2RlZmluZSBXRUJLSVRf
RlJBTUVfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfRlJBTUUsIFdlYktpdEZyYW1lQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNf
RlJBTUUob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VC
S0lUX1RZUEVfRlJBTUUpKQorI2RlZmluZSBXRUJLSVRfSVNfRlJBTUVfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRlJBTUUpKQorI2Rl
ZmluZSBXRUJLSVRfRlJBTUVfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRlJBTUUsIFdlYktpdEZyYW1lQ2xhc3MpKQogCiAKLXN0
cnVjdCBfV2ViS2l0R3RrRnJhbWUgeworc3RydWN0IF9XZWJLaXRGcmFtZSB7CiAgICAgR09iamVj
dCBwYXJlbnQ7CiB9OwogCi1zdHJ1Y3QgX1dlYktpdEd0a0ZyYW1lQ2xhc3Mgeworc3RydWN0IF9X
ZWJLaXRGcmFtZUNsYXNzIHsKICAgICBHT2JqZWN0Q2xhc3MgcGFyZW50OwogCi0gICAgdm9pZCAo
KnRpdGxlX2NoYW5nZWQpIChXZWJLaXRHdGtGcmFtZSogZnJhbWUsIGdjaGFyKiB0aXRsZSwgZ2No
YXIqIGxvY2F0aW9uKTsKKyAgICB2b2lkICgqdGl0bGVfY2hhbmdlZCkgKFdlYktpdEZyYW1lKiBm
cmFtZSwgZ2NoYXIqIHRpdGxlLCBnY2hhciogbG9jYXRpb24pOwogCiAgICAgLyoKICAgICAgKiBw
cm90ZWN0ZWQgdmlydHVhbCBtZXRob2RzCiAgICAgICovCi0gICAgdm9pZCAoKm1vdXNlX21vdmVf
ZXZlbnQpICAoV2ViS2l0R3RrRnJhbWUqIGZyYW1lLCBHZGtFdmVudCogbW92ZV9ldmVudCk7Ci0g
ICAgdm9pZCAoKm1vdXNlX3ByZXNzX2V2ZW50KSAoV2ViS2l0R3RrRnJhbWUqIGZyYW1lLCBHZGtF
dmVudCogcHJlc3NfZXZlbnQpOwotICAgIHZvaWQgKCptb3VzZV9yZWxlYXNlX2V2ZW50KSAoV2Vi
S2l0R3RrRnJhbWUqIGZyYW1lLCBHZGtFdmVudCogbW91c2VfcmVsZWFzZV9ldmVudCk7Ci0gICAg
dm9pZCAoKm1vdXNlX2RvdWJsZV9jbGlja19ldmVudCkgKFdlYktpdEd0a0ZyYW1lKiBmcmFtZSwg
R2RrRXZlbnQqIGRvdWJsZV9jbGlja19ldmVudCk7Ci0gICAgdm9pZCAoKm1vdXNlX3doZWVsX2V2
ZW50KSAoV2ViS2l0R3RrRnJhbWUqIGZyYW1lLCBHZGtFdmVudCogd2hlZWxfZXZlbnQpOworICAg
IHZvaWQgKCptb3VzZV9tb3ZlX2V2ZW50KSAgKFdlYktpdEZyYW1lKiBmcmFtZSwgR2RrRXZlbnQq
IG1vdmVfZXZlbnQpOworICAgIHZvaWQgKCptb3VzZV9wcmVzc19ldmVudCkgKFdlYktpdEZyYW1l
KiBmcmFtZSwgR2RrRXZlbnQqIHByZXNzX2V2ZW50KTsKKyAgICB2b2lkICgqbW91c2VfcmVsZWFz
ZV9ldmVudCkgKFdlYktpdEZyYW1lKiBmcmFtZSwgR2RrRXZlbnQqIG1vdXNlX3JlbGVhc2VfZXZl
bnQpOworICAgIHZvaWQgKCptb3VzZV9kb3VibGVfY2xpY2tfZXZlbnQpIChXZWJLaXRGcmFtZSog
ZnJhbWUsIEdka0V2ZW50KiBkb3VibGVfY2xpY2tfZXZlbnQpOworICAgIHZvaWQgKCptb3VzZV93
aGVlbF9ldmVudCkgKFdlYktpdEZyYW1lKiBmcmFtZSwgR2RrRXZlbnQqIHdoZWVsX2V2ZW50KTsK
IH07CiAKLVdFQktJVF9HVEtfQVBJIEdUeXBlCi13ZWJraXRfZ3RrX2ZyYW1lX2dldF90eXBlICh2
b2lkKTsKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9mcmFtZV9nZXRfdHlwZSAodm9pZCk7CiAK
LVdFQktJVF9HVEtfQVBJIEdPYmplY3QqCi13ZWJraXRfZ3RrX2ZyYW1lX25ldyAoV2ViS2l0R3Rr
UGFnZSAqcGFnZSk7CitXRUJLSVRfQVBJIEdPYmplY3QqCit3ZWJraXRfZnJhbWVfbmV3IChXZWJL
aXRQYWdlICpwYWdlKTsKIAotV0VCS0lUX0dUS19BUEkgV2ViS2l0R3RrUGFnZSoKLXdlYmtpdF9n
dGtfZnJhbWVfZ2V0X3BhZ2UgKFdlYktpdEd0a0ZyYW1lKiBmcmFtZSk7CitXRUJLSVRfQVBJIFdl
YktpdFBhZ2UqCit3ZWJraXRfZnJhbWVfZ2V0X3BhZ2UgKFdlYktpdEZyYW1lKiBmcmFtZSk7CiAK
LVdFQktJVF9HVEtfQVBJIGdjaGFyKgotd2Via2l0X2d0a19mcmFtZV9nZXRfbWFya3VwIChXZWJL
aXRHdGtGcmFtZSogZnJhbWUpOworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9mcmFtZV9nZXRf
bWFya3VwIChXZWJLaXRGcmFtZSogZnJhbWUpOwogCi1XRUJLSVRfR1RLX0FQSSBnY2hhcioKLXdl
YmtpdF9ndGtfZnJhbWVfZ2V0X2lubmVyX3RleHQgKFdlYktpdEd0a0ZyYW1lKiBmcmFtZSk7CitX
RUJLSVRfQVBJIGdjaGFyKgord2Via2l0X2ZyYW1lX2dldF9pbm5lcl90ZXh0IChXZWJLaXRGcmFt
ZSogZnJhbWUpOwogCi1XRUJLSVRfR1RLX0FQSSBnY2hhcioKLXdlYmtpdF9ndGtfZnJhbWVfZ2V0
X3NlbGVjdGVkX3RleHQgKFdlYktpdEd0a0ZyYW1lKiBmcmFtZSk7CitXRUJLSVRfQVBJIGdjaGFy
Kgord2Via2l0X2ZyYW1lX2dldF9zZWxlY3RlZF90ZXh0IChXZWJLaXRGcmFtZSogZnJhbWUpOwog
Ci1XRUJLSVRfR1RLX0FQSSBnY2hhcioKLXdlYmtpdF9ndGtfZnJhbWVfZ2V0X3RpdGxlIChXZWJL
aXRHdGtGcmFtZSogZnJhbWUpOworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9mcmFtZV9nZXRf
dGl0bGUgKFdlYktpdEZyYW1lKiBmcmFtZSk7CiAKLVdFQktJVF9HVEtfQVBJIGdjaGFyKgotd2Vi
a2l0X2d0a19mcmFtZV9nZXRfbG9jYXRpb24gKFdlYktpdEd0a0ZyYW1lKiBmcmFtZSk7CitXRUJL
SVRfQVBJIGdjaGFyKgord2Via2l0X2ZyYW1lX2dldF9sb2NhdGlvbiAoV2ViS2l0RnJhbWUqIGZy
YW1lKTsKIAotV0VCS0lUX0dUS19BUEkgR1NMaXN0Kgotd2Via2l0X2d0a19mcmFtZV9nZXRfY2hp
bGRfZnJhbWVzIChXZWJLaXRHdGtGcmFtZSogZnJhbWUpOworV0VCS0lUX0FQSSBHU0xpc3QqCit3
ZWJraXRfZnJhbWVfZ2V0X2NoaWxkX2ZyYW1lcyAoV2ViS2l0RnJhbWUqIGZyYW1lKTsKIAotV0VC
S0lUX0dUS19BUEkgR2RrUG9pbnQqCi13ZWJraXRfZ3RrX2ZyYW1lX2dldF9wb3NpdGlvbiAoV2Vi
S2l0R3RrRnJhbWUqIGZyYW1lKTsKK1dFQktJVF9BUEkgR2RrUG9pbnQqCit3ZWJraXRfZnJhbWVf
Z2V0X3Bvc2l0aW9uIChXZWJLaXRGcmFtZSogZnJhbWUpOwogCi1XRUJLSVRfR1RLX0FQSSBHZGtS
ZWN0YW5nbGUqCi13ZWJraXRfZ3RrX2ZyYW1lX2dldF9yZWN0YW5nbGUgKFdlYktpdEd0a0ZyYW1l
KiBmcmFtZSk7CitXRUJLSVRfQVBJIEdka1JlY3RhbmdsZSoKK3dlYmtpdF9mcmFtZV9nZXRfcmVj
dGFuZ2xlIChXZWJLaXRGcmFtZSogZnJhbWUpOwogCi1XRUJLSVRfR1RLX0FQSSBXZWJLaXRHdGtQ
YWdlKgotd2Via2l0X2d0a19mcmFtZV9nZXRfcGFnZSAoV2ViS2l0R3RrRnJhbWUqIGZyYW1lKTsK
K1dFQktJVF9BUEkgV2ViS2l0UGFnZSoKK3dlYmtpdF9mcmFtZV9nZXRfcGFnZSAoV2ViS2l0RnJh
bWUqIGZyYW1lKTsKIAogR19FTkRfREVDTFMKIApJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0
Z3RrZ2xvYmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtnbG9i
YWwuY3BwCShyZXZpc2lvbiAyNjAxNSkKKysrIFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2dsb2Jh
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAKIGV4dGVybiAiQyIgewotdm9pZCB3ZWJraXRfZ3RrX2luaXQodm9pZCkKK3ZvaWQgd2Vi
a2l0X2luaXQodm9pZCkKIHsKICAgICBXZWJDb3JlOjpJbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxz
SWZOZWNlc3NhcnkoKTsKIH0KSW5kZXg6IFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2dsb2JhbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2dsb2JhbC5oCShyZXZpc2lv
biAyNjAxNSkKKysrIFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a2dsb2JhbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxNSArMjYsMTUgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXRUJL
SVRfR1RLX0dMT0JBTF9ICi0jZGVmaW5lIFdFQktJVF9HVEtfR0xPQkFMX0gKKyNpZm5kZWYgV0VC
S0lUX0dMT0JBTF9ICisjZGVmaW5lIFdFQktJVF9HTE9CQUxfSAogCiAjaW5jbHVkZSAid2Via2l0
Z3RrZGVmaW5lcy5oIgogCiBHX0JFR0lOX0RFQ0xTCiAKLVdFQktJVF9HVEtfQVBJIHZvaWQKLXdl
YmtpdF9ndGtfaW5pdCAodm9pZCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9pbml0ICh2b2lk
KTsKIAogR19FTkRfREVDTFMKIApJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrbmV0d29y
a3JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtuZXR3b3Jr
cmVxdWVzdC5oCShyZXZpc2lvbiAyNjAxNSkKKysrIFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a25l
dHdvcmtyZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXRUJLSVRfR1RLX05FVFdPUktfUkVRVUVTVF9ICi0jZGVmaW5l
IFdFQktJVF9HVEtfTkVUV09SS19SRVFVRVNUX0gKKyNpZm5kZWYgV0VCS0lUX05FVFdPUktfUkVR
VUVTVF9ICisjZGVmaW5lIFdFQktJVF9ORVRXT1JLX1JFUVVFU1RfSAogCiAjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KIApAQCAtMzUsMzAgKzM1LDMwIEBACiAKIEdfQkVHSU5fREVDTFMKIAotI2Rl
ZmluZSBXRUJLSVRfR1RLX1RZUEVfTkVUV09SS19SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF9n
dGtfbmV0d29ya19yZXF1ZXN0X2dldF90eXBlKCkpCi0jZGVmaW5lIFdFQktJVF9HVEtfTkVUV09S
S19SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9i
aiksIFdFQktJVF9HVEtfVFlQRV9ORVRXT1JLX1JFUVVFU1QsIFdlYktpdEd0a05ldHdvcmtSZXF1
ZXN0KSkKLSNkZWZpbmUgV0VCS0lUX0dUS19ORVRXT1JLX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0dUS19UWVBFX05FVFdP
UktfUkVRVUVTVCwgV2ViS2l0R3RrTmV0d29ya1JlcXVlc3RDbGFzcykpCi0jZGVmaW5lIFdFQktJ
VF9HVEtfSVNfTkVUV09SS19SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIFdFQktJVF9HVEtfVFlQRV9ORVRXT1JLX1JFUVVFU1QpKQotI2RlZmlu
ZSBXRUJLSVRfR1RLX0lTX05FVFdPUktfUkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfR1RLX1RZUEVfTkVUV09SS19SRVFVRVNUKSkK
LSNkZWZpbmUgV0VCS0lUX0dUS19ORVRXT1JLX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX0dUS19UWVBFX05FVFdPUktfUkVR
VUVTVCwgV2ViS2l0R3RrTmV0d29ya1JlcXVlc3RDbGFzcykpCisjZGVmaW5lIFdFQktJVF9UWVBF
X05FVFdPUktfUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF90
eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ORVRXT1JLX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFV
RVNULCBXZWJLaXROZXR3b3JrUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9ORVRXT1JLX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBXZWJLaXROZXR3b3JrUmVxdWVzdENsYXNzKSkKKyNk
ZWZpbmUgV0VCS0lUX0lTX05FVFdPUktfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFUVVFU1QpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfTkVUV09SS19SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCkpCisjZGVm
aW5lIFdFQktJVF9ORVRXT1JLX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVFVRVNULCBXZWJLaXRO
ZXR3b3JrUmVxdWVzdENsYXNzKSkKIAogCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3RrTmV0d29y
a1JlcXVlc3QgV2ViS2l0R3RrTmV0d29ya1JlcXVlc3Q7Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0
R3RrTmV0d29ya1JlcXVlc3RDbGFzcyBXZWJLaXRHdGtOZXR3b3JrUmVxdWVzdENsYXNzOwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0IFdlYktpdE5ldHdvcmtSZXF1ZXN0Owor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdE5ldHdvcmtSZXF1ZXN0Q2xhc3MgV2ViS2l0TmV0d29ya1Jl
cXVlc3RDbGFzczsKIAotc3RydWN0IF9XZWJLaXRHdGtOZXR3b3JrUmVxdWVzdCB7CitzdHJ1Y3Qg
X1dlYktpdE5ldHdvcmtSZXF1ZXN0IHsKICAgICBHT2JqZWN0IHBhcmVudDsKIH07CiAKLXN0cnVj
dCBfV2ViS2l0R3RrTmV0d29ya1JlcXVlc3RDbGFzcyB7CitzdHJ1Y3QgX1dlYktpdE5ldHdvcmtS
ZXF1ZXN0Q2xhc3MgewogICAgIEdPYmplY3QgcGFyZW50OwogfTsKIAotV0VCS0lUX0dUS19BUEkg
R1R5cGUKLXdlYmtpdF9ndGtfbmV0d29ya19yZXF1ZXN0X2dldF90eXBlICh2b2lkKTsKK1dFQktJ
VF9BUEkgR1R5cGUKK3dlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3R5cGUgKHZvaWQpOwogCi1X
RUJLSVRfR1RLX0FQSSBHT2JqZWN0Kgotd2Via2l0X2d0a19uZXR3b3JrX3JlcXVlc3RfbmV3ICh2
b2lkKTsKK1dFQktJVF9BUEkgR09iamVjdCoKK3dlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3ICh2
b2lkKTsKIAogR19FTkRfREVDTFMKIApJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcGFnZS5jcHAJKHJl
dmlzaW9uIDI2MDE1KQorKysgV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDEzICs2NywxMyBAQCBlbnVtIHsKICAgICBMQVNUX1NJR05BTAogfTsK
IAotc3RhdGljIGd1aW50IHdlYmtpdF9ndGtfcGFnZV9zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsg
MCwgfTsKK3N0YXRpYyBndWludCB3ZWJraXRfcGFnZV9zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsg
MCwgfTsKIAotR19ERUZJTkVfVFlQRShXZWJLaXRHdGtQYWdlLCB3ZWJraXRfZ3RrX3BhZ2UsIEdU
S19UWVBFX0NPTlRBSU5FUikKK0dfREVGSU5FX1RZUEUoV2ViS2l0UGFnZSwgd2Via2l0X3BhZ2Us
IEdUS19UWVBFX0NPTlRBSU5FUikKIAotc3RhdGljIGdib29sZWFuIHdlYmtpdF9ndGtfcGFnZV9l
eHBvc2VfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKiBldmVudCkKK3N0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfcGFnZV9leHBvc2VfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50RXhwb3NlKiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGdldEZy
YW1lRnJvbVBhZ2UoV0VCS0lUX0dUS19QQUdFKHdpZGdldCkpKTsKKyAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKGdldEZyYW1lRnJvbVBhZ2UoV0VCS0lUX1BBR0Uod2lkZ2V0KSkpOwogICAgIEdka1Jl
Y3RhbmdsZSBjbGlwOwogICAgIGdka19yZWdpb25fZ2V0X2NsaXBib3goZXZlbnQtPnJlZ2lvbiwg
JmNsaXApOwogICAgIGNhaXJvX3QqIGNyID0gZ2RrX2NhaXJvX2NyZWF0ZShldmVudC0+d2luZG93
KTsKQEAgLTg5LDE2ICs4OSwxNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2d0a19wYWdlX2V4
cG9zZV9lCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2d0
a19wYWdlX2tleV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZW50KQor
c3RhdGljIGdib29sZWFuIHdlYmtpdF9wYWdlX2tleV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnRLZXkqIGV2ZW50KQogewotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUoZ2V0RnJhbWVG
cm9tUGFnZShXRUJLSVRfR1RLX1BBR0Uod2lkZ2V0KSkpOworICAgIEZyYW1lKiBmcmFtZSA9IGNv
cmUoZ2V0RnJhbWVGcm9tUGFnZShXRUJLSVRfUEFHRSh3aWRnZXQpKSk7CiAgICAgZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQoZXZlbnQpKTsKICAg
ICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZ3RrX3BhZ2VfYnV0
dG9uX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQpCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3BhZ2VfYnV0dG9uX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEJ1dHRvbiogZXZlbnQpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZShnZXRGcmFt
ZUZyb21QYWdlKFdFQktJVF9HVEtfUEFHRSh3aWRnZXQpKSk7CisgICAgRnJhbWUqIGZyYW1lID0g
Y29yZShnZXRGcmFtZUZyb21QYWdlKFdFQktJVF9QQUdFKHdpZGdldCkpKTsKIAogICAgIGlmIChl
dmVudC0+dHlwZSA9PSBHREtfQlVUVE9OX1JFTEVBU0UpCiAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50
KSk7CkBAIC0xMDgsMzQgKzEwOCwzNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2d0a19wYWdl
X2J1dHRvbl9lCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X2d0a19wYWdlX21vdGlvbl9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRNb3Rpb24q
IGV2ZW50KQorc3RhdGljIGdib29sZWFuIHdlYmtpdF9wYWdlX21vdGlvbl9ldmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRNb3Rpb24qIGV2ZW50KQogewotICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUoZ2V0RnJhbWVGcm9tUGFnZShXRUJLSVRfR1RLX1BBR0Uod2lkZ2V0KSkpOworICAgIEZy
YW1lKiBmcmFtZSA9IGNvcmUoZ2V0RnJhbWVGcm9tUGFnZShXRUJLSVRfUEFHRSh3aWRnZXQpKSk7
CiAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKFBsYXRmb3JtTW91c2VFdmVu
dChldmVudCkpOwogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYmtp
dF9ndGtfcGFnZV9zY3JvbGxfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50U2Nyb2xs
KiBldmVudCkKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfcGFnZV9zY3JvbGxfZXZlbnQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0V2ZW50U2Nyb2xsKiBldmVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKGdldEZyYW1lRnJvbVBhZ2UoV0VCS0lUX0dUS19QQUdFKHdpZGdldCkpKTsKKyAgICBG
cmFtZSogZnJhbWUgPSBjb3JlKGdldEZyYW1lRnJvbVBhZ2UoV0VCS0lUX1BBR0Uod2lkZ2V0KSkp
OwogCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHdoZWVsRXZlbnQoZXZlbnQpOwogICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICByZXR1
cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9ndGtfcGFnZV9zaXplX2FsbG9jYXRl
KEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQorc3RhdGljIHZv
aWQgd2Via2l0X3BhZ2Vfc2l6ZV9hbGxvY2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2Nh
dGlvbiogYWxsb2NhdGlvbikKIHsKLSAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF9ndGtfcGFn
ZV9wYXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdldCxhbGxvY2F0aW9uKTsKKyAgICBH
VEtfV0lER0VUX0NMQVNTKHdlYmtpdF9wYWdlX3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2NhdGUo
d2lkZ2V0LGFsbG9jYXRpb24pOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZShnZXRGcmFtZUZy
b21QYWdlKFdFQktJVF9HVEtfUEFHRSh3aWRnZXQpKSk7CisgICAgRnJhbWUqIGZyYW1lID0gY29y
ZShnZXRGcmFtZUZyb21QYWdlKFdFQktJVF9QQUdFKHdpZGdldCkpKTsKICAgICBmcmFtZS0+dmll
dygpLT5yZXNpemUoYWxsb2NhdGlvbi0+d2lkdGgsIGFsbG9jYXRpb24tPmhlaWdodCk7CiAgICAg
ZnJhbWUtPmZvcmNlTGF5b3V0KCk7CiAgICAgZnJhbWUtPnZpZXcoKS0+YWRqdXN0Vmlld1NpemUo
KTsKICAgICBmcmFtZS0+c2VuZFJlc2l6ZUV2ZW50KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtp
dF9ndGtfcGFnZV9yZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQorc3RhdGljIHZvaWQgd2Via2l0
X3BhZ2VfcmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKIHsKICAgICBHVEtfV0lER0VUX1NFVF9G
TEFHUyh3aWRnZXQsIEdUS19SRUFMSVpFRCk7CiAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9ndGtfcGFnZV9yZWFsaXplKEd0a1cKICAgICBnZGtfd2luZG93X3NldF91
c2VyX2RhdGEod2lkZ2V0LT53aW5kb3csIHdpZGdldCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtp
dF9ndGtfcGFnZV9tYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCitzdGF0aWMgdm9pZCB3ZWJraXRfcGFn
ZV9tYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgR1RLX1dJREdFVF9TRVRfRkxBR1Mod2lk
Z2V0LCBHVEtfTUFQUEVEKTsKLSAgICBXZWJLaXRHdGtQYWdlUHJpdmF0ZSogcHJpdmF0ZV9kYXRh
ID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklWQVRFKFdFQktJVF9HVEtfUEFHRSh3aWRnZXQpKTsK
KyAgICBXZWJLaXRQYWdlUHJpdmF0ZSogcHJpdmF0ZV9kYXRhID0gV0VCS0lUX1BBR0VfR0VUX1BS
SVZBVEUoV0VCS0lUX1BBR0Uod2lkZ2V0KSk7CiAKICAgICBIYXNoU2V0PEd0a1dpZGdldCo+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBwcml2YXRlX2RhdGEtPmNoaWxkcmVuLmVuZCgpOwogICAgIGZv
ciAoSGFzaFNldDxHdGtXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IHByaXZhdGVf
ZGF0YS0+Y2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKQEAgLTE3
OCwxNiArMTc4LDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9ndGtfcGFnZV9tYXAoR3RrV2lkZ2UK
ICAgICBnZGtfd2luZG93X3Nob3cod2lkZ2V0LT53aW5kb3cpOwogfQogCi1zdGF0aWMgdm9pZCB3
ZWJraXRfZ3RrX3BhZ2Vfc2V0X3Njcm9sbF9hZGp1c3RtZW50cyhXZWJLaXRHdGtQYWdlKiBwYWdl
LCBHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2YWRqKQorc3RhdGljIHZvaWQg
d2Via2l0X3BhZ2Vfc2V0X3Njcm9sbF9hZGp1c3RtZW50cyhXZWJLaXRQYWdlKiBwYWdlLCBHdGtB
ZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2YWRqKQogewogICAgIEZyYW1lVmlldyog
dmlldyA9IGNvcmUoZ2V0RnJhbWVGcm9tUGFnZShwYWdlKSktPnZpZXcoKTsKICAgICB2aWV3LT5z
ZXRHdGtBZGp1c3RtZW50cyhoYWRqLCB2YWRqKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2d0
a19wYWdlX2NvbnRhaW5lcl9hZGQoR3RrQ29udGFpbmVyKiBjb250YWluZXIsIEd0a1dpZGdldCog
d2lkZ2V0KQorc3RhdGljIHZvaWQgd2Via2l0X3BhZ2VfY29udGFpbmVyX2FkZChHdGtDb250YWlu
ZXIqIGNvbnRhaW5lciwgR3RrV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgV2ViS2l0R3RrUGFnZSog
cGFnZSA9IFdFQktJVF9HVEtfUEFHRShjb250YWluZXIpOwotICAgIFdlYktpdEd0a1BhZ2VQcml2
YXRlKiBwcml2YXRlX2RhdGEgPSBXRUJLSVRfR1RLX1BBR0VfR0VUX1BSSVZBVEUocGFnZSk7Cisg
ICAgV2ViS2l0UGFnZSogcGFnZSA9IFdFQktJVF9QQUdFKGNvbnRhaW5lcik7CisgICAgV2ViS2l0
UGFnZVByaXZhdGUqIHByaXZhdGVfZGF0YSA9IFdFQktJVF9QQUdFX0dFVF9QUklWQVRFKHBhZ2Up
OwogCiAgICAgcHJpdmF0ZV9kYXRhLT5jaGlsZHJlbi5hZGQod2lkZ2V0KTsKICAgICBpZiAoR1RL
X1dJREdFVF9SRUFMSVpFRChjb250YWluZXIpKQpAQCAtMTk1LDkgKzE5NSw5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF9ndGtfcGFnZV9jb250YWluZXJfYWQKICAgICBndGtfd2lkZ2V0X3NldF9wYXJl
bnQod2lkZ2V0LCBHVEtfV0lER0VUKGNvbnRhaW5lcikpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJr
aXRfZ3RrX3BhZ2VfY29udGFpbmVyX3JlbW92ZShHdGtDb250YWluZXIqIGNvbnRhaW5lciwgR3Rr
V2lkZ2V0KiB3aWRnZXQpCitzdGF0aWMgdm9pZCB3ZWJraXRfcGFnZV9jb250YWluZXJfcmVtb3Zl
KEd0a0NvbnRhaW5lciogY29udGFpbmVyLCBHdGtXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBXZWJL
aXRHdGtQYWdlUHJpdmF0ZSogcHJpdmF0ZV9kYXRhID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklW
QVRFKFdFQktJVF9HVEtfUEFHRShjb250YWluZXIpKTsKKyAgICBXZWJLaXRQYWdlUHJpdmF0ZSog
cHJpdmF0ZV9kYXRhID0gV0VCS0lUX1BBR0VfR0VUX1BSSVZBVEUoV0VCS0lUX1BBR0UoY29udGFp
bmVyKSk7CiAKICAgICBpZiAocHJpdmF0ZV9kYXRhLT5jaGlsZHJlbi5jb250YWlucyh3aWRnZXQp
KSB7CiAgICAgICAgIGd0a193aWRnZXRfdW5wYXJlbnQod2lkZ2V0KTsKQEAgLTIwNSw5ICsyMDUs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZ3RrX3BhZ2VfY29udGFpbmVyX3JlCiAgICAgfQogfQog
Ci1zdGF0aWMgdm9pZCB3ZWJraXRfZ3RrX3BhZ2VfY29udGFpbmVyX2ZvcmFsbChHdGtDb250YWlu
ZXIqIGNvbnRhaW5lciwgZ2Jvb2xlYW4sIEd0a0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciBj
YWxsYmFja0RhdGEpCitzdGF0aWMgdm9pZCB3ZWJraXRfcGFnZV9jb250YWluZXJfZm9yYWxsKEd0
a0NvbnRhaW5lciogY29udGFpbmVyLCBnYm9vbGVhbiwgR3RrQ2FsbGJhY2sgY2FsbGJhY2ssIGdw
b2ludGVyIGNhbGxiYWNrRGF0YSkKIHsKLSAgICBXZWJLaXRHdGtQYWdlUHJpdmF0ZSogcHJpdmF0
ZURhdGEgPSBXRUJLSVRfR1RLX1BBR0VfR0VUX1BSSVZBVEUoV0VCS0lUX0dUS19QQUdFKGNvbnRh
aW5lcikpOworICAgIFdlYktpdFBhZ2VQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9QQUdF
X0dFVF9QUklWQVRFKFdFQktJVF9QQUdFKGNvbnRhaW5lcikpOwogCiAgICAgSGFzaFNldDxHdGtX
aWRnZXQqPiBjaGlsZHJlbiA9IHByaXZhdGVEYXRhLT5jaGlsZHJlbjsKICAgICBIYXNoU2V0PEd0
a1dpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKQEAgLTIxNSw4
MCArMjE1LDgwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9ndGtfcGFnZV9jb250YWluZXJfZm8KICAg
ICAgICAgKCpjYWxsYmFjaykoKmN1cnJlbnQsIGNhbGxiYWNrRGF0YSk7CiB9CiAKLXN0YXRpYyBX
ZWJLaXRHdGtQYWdlKiB3ZWJraXRfZ3RrX3BhZ2VfcmVhbF9jcmVhdGVfcGFnZShXZWJLaXRHdGtQ
YWdlKikKK3N0YXRpYyBXZWJLaXRQYWdlKiB3ZWJraXRfcGFnZV9yZWFsX2NyZWF0ZV9wYWdlKFdl
YktpdFBhZ2UqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
LXN0YXRpYyBXRUJLSVRfR1RLX05BVklHQVRJT05fUkVRVUVTVF9SRVNQT05TRSB3ZWJraXRfZ3Rr
X3BhZ2VfcmVhbF9uYXZpZ2F0aW9uX3JlcXVlc3RlZChXZWJLaXRHdGtQYWdlKiwgV2ViS2l0R3Rr
RnJhbWUqIGZyYW1lLCBXZWJLaXRHdGtOZXR3b3JrUmVxdWVzdCopCitzdGF0aWMgV0VCS0lUX05B
VklHQVRJT05fUkVRVUVTVF9SRVNQT05TRSB3ZWJraXRfcGFnZV9yZWFsX25hdmlnYXRpb25fcmVx
dWVzdGVkKFdlYktpdFBhZ2UqLCBXZWJLaXRGcmFtZSogZnJhbWUsIFdlYktpdE5ldHdvcmtSZXF1
ZXN0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBXRUJLSVRfR1RLX0FD
Q0VQVF9OQVZJR0FUSU9OX1JFUVVFU1Q7CisgICAgcmV0dXJuIFdFQktJVF9BQ0NFUFRfTkFWSUdB
VElPTl9SRVFVRVNUOwogfQogCi1zdGF0aWMgZ2NoYXIqIHdlYmtpdF9ndGtfcGFnZV9yZWFsX2No
b29zZV9maWxlKFdlYktpdEd0a1BhZ2UqLCBXZWJLaXRHdGtGcmFtZSosIGNvbnN0IGdjaGFyKiBv
bGRfbmFtZSkKK3N0YXRpYyBnY2hhciogd2Via2l0X3BhZ2VfcmVhbF9jaG9vc2VfZmlsZShXZWJL
aXRQYWdlKiwgV2ViS2l0RnJhbWUqLCBjb25zdCBnY2hhciogb2xkX25hbWUpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZ19zdHJkdXAob2xkX25hbWUpOwogfQogCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZ3RrX3BhZ2VfcmVhbF9qYXZhX3NjcmlwdF9hbGVydChXZWJLaXRHdGtQ
YWdlKiwgV2ViS2l0R3RrRnJhbWUqLCBjb25zdCBnY2hhciopCitzdGF0aWMgdm9pZCB3ZWJraXRf
cGFnZV9yZWFsX2phdmFfc2NyaXB0X2FsZXJ0KFdlYktpdFBhZ2UqLCBXZWJLaXRGcmFtZSosIGNv
bnN0IGdjaGFyKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X2d0a19wYWdlX3JlYWxfamF2YV9zY3JpcHRfY29uZmlybShXZWJLaXRHdGtQYWdl
KiwgV2ViS2l0R3RrRnJhbWUqLCBjb25zdCBnY2hhciopCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
X3BhZ2VfcmVhbF9qYXZhX3NjcmlwdF9jb25maXJtKFdlYktpdFBhZ2UqLCBXZWJLaXRGcmFtZSos
IGNvbnN0IGdjaGFyKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBGQUxT
RTsKIH0KIAogLyoqCi0gKiBXZWJLaXRHdGtQYWdlOjpqYXZhX3NjcmlwdF9wcm9tcHQKKyAqIFdl
YktpdFBhZ2U6OmphdmFfc2NyaXB0X3Byb21wdAogICoKICAqIEByZXR1cm46IE5VTEwgdG8gY2Fu
Y2VsIHRoZSBwcm9tcHQKICAqLwotc3RhdGljIGdjaGFyKiB3ZWJraXRfZ3RrX3BhZ2VfcmVhbF9q
YXZhX3NjcmlwdF9wcm9tcHQoV2ViS2l0R3RrUGFnZSosIFdlYktpdEd0a0ZyYW1lKiwgY29uc3Qg
Z2NoYXIqLCBjb25zdCBnY2hhciogZGVmYXVsdFZhbHVlKQorc3RhdGljIGdjaGFyKiB3ZWJraXRf
cGFnZV9yZWFsX2phdmFfc2NyaXB0X3Byb21wdChXZWJLaXRQYWdlKiwgV2ViS2l0RnJhbWUqLCBj
b25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiBkZWZhdWx0VmFsdWUpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gZ19zdHJkdXAoZGVmYXVsdFZhbHVlKTsKIH0KIAotc3RhdGlj
IHZvaWQgd2Via2l0X2d0a19wYWdlX3JlYWxfamF2YV9zY3JpcHRfY29uc29sZV9tZXNzYWdlKFdl
YktpdEd0a1BhZ2UqLCBjb25zdCBnY2hhciosIHVuc2lnbmVkIGludCwgY29uc3QgZ2NoYXIqKQor
c3RhdGljIHZvaWQgd2Via2l0X3BhZ2VfcmVhbF9qYXZhX3NjcmlwdF9jb25zb2xlX21lc3NhZ2Uo
V2ViS2l0UGFnZSosIGNvbnN0IGdjaGFyKiwgdW5zaWduZWQgaW50LCBjb25zdCBnY2hhciopCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2d0a19wYWdl
X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3N0YXRpYyB2b2lkIHdlYmtpdF9wYWdlX2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKIHsKLSAgICB3ZWJraXRfZ3RrX3BhZ2Vfc3RvcF9sb2FkaW5n
KFdFQktJVF9HVEtfUEFHRShvYmplY3QpKTsKKyAgICB3ZWJraXRfcGFnZV9zdG9wX2xvYWRpbmco
V0VCS0lUX1BBR0Uob2JqZWN0KSk7CiAKLSAgICBXZWJLaXRHdGtQYWdlUHJpdmF0ZSogcGFnZURh
dGEgPSBXRUJLSVRfR1RLX1BBR0VfR0VUX1BSSVZBVEUoV0VCS0lUX0dUS19QQUdFKG9iamVjdCkp
OworICAgIFdlYktpdFBhZ2VQcml2YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9QQUdFX0dFVF9QUklW
QVRFKFdFQktJVF9QQUdFKG9iamVjdCkpOwogICAgIGRlbGV0ZSBwYWdlRGF0YS0+cGFnZTsKICAg
ICBkZWxldGUgcGFnZURhdGEtPnNldHRpbmdzOwogICAgIGdfb2JqZWN0X3VucmVmKHBhZ2VEYXRh
LT5tYWluRnJhbWUpOwogICAgIGRlbGV0ZSBwYWdlRGF0YS0+dXNlckFnZW50OwogCi0gICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2d0a19wYWdlX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3BhZ2VfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2d0a19wYWdlX2NsYXNzX2luaXQo
V2ViS2l0R3RrUGFnZUNsYXNzKiBwYWdlQ2xhc3MpCitzdGF0aWMgdm9pZCB3ZWJraXRfcGFnZV9j
bGFzc19pbml0KFdlYktpdFBhZ2VDbGFzcyogcGFnZUNsYXNzKQogewotICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShwYWdlQ2xhc3MsIHNpemVvZihXZWJLaXRHdGtQYWdlUHJpdmF0ZSkpOwor
ICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShwYWdlQ2xhc3MsIHNpemVvZihXZWJLaXRQYWdl
UHJpdmF0ZSkpOwogCiAKICAgICAvKgogICAgICAqIHNpZ25hbHMKICAgICAgKi8KICAgICAvKioK
LSAgICAgKiBXZWJLaXRHdGtQYWdlOjpsb2FkLXN0YXJ0ZWQKKyAgICAgKiBXZWJLaXRQYWdlOjps
b2FkLXN0YXJ0ZWQKICAgICAgKiBAcGFnZTogdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgc2lnbmFs
IGlzIGVtaXR0ZWQKICAgICAgKiBAZnJhbWU6IHRoZSBmcmFtZSBnb2luZyB0byBkbyB0aGUgbG9h
ZAogICAgICAqCi0gICAgICogV2hlbiBhIFdlYktpdEd0a0ZyYW1lIGJlZ2lucyB0byBsb2FkIHRo
aXMgc2lnbmFsIGlzIGVtaXR0ZWQuCisgICAgICogV2hlbiBhIFdlYktpdEZyYW1lIGJlZ2lucyB0
byBsb2FkIHRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQuCiAgICAgICovCi0gICAgd2Via2l0X2d0a19w
YWdlX3NpZ25hbHNbTE9BRF9TVEFSVEVEXSA9IGdfc2lnbmFsX25ldygibG9hZF9zdGFydGVkIiwK
KyAgICB3ZWJraXRfcGFnZV9zaWduYWxzW0xPQURfU1RBUlRFRF0gPSBnX3NpZ25hbF9uZXcoImxv
YWRfc3RhcnRlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhwYWdlQ2xhc3MpLAog
ICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9B
Q1RJT04pLAogICAgICAgICAgICAgMCwKQEAgLTI5NiwxNCArMjk2LDE0IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9ndGtfcGFnZV9jbGFzc19pbml0KFcKICAgICAgICAgICAgIE5VTEwsCiAgICAgICAg
ICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAogICAgICAgICAgICAgR19UWVBF
X05PTkUsIDEsCi0gICAgICAgICAgICBXRUJLSVRfR1RLX1RZUEVfRlJBTUUpOworICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfRlJBTUUpOwogCiAgICAgLyoqCi0gICAgICogV2ViS2l0R3RrUGFnZTo6
bG9hZC1wcm9ncmVzcy1jaGFuZ2VkCi0gICAgICogQHBhZ2U6IFRoZSBXZWJLaXRHdGtQYWdlCisg
ICAgICogV2ViS2l0UGFnZTo6bG9hZC1wcm9ncmVzcy1jaGFuZ2VkCisgICAgICogQHBhZ2U6IFRo
ZSBXZWJLaXRQYWdlCiAgICAgICogQHByb2dyZXNzOiBHbG9iYWwgcHJvZ3Jlc3MKICAgICAgKi8K
LSAgICB3ZWJraXRfZ3RrX3BhZ2Vfc2lnbmFsc1tMT0FEX1BST0dSRVNTX0NIQU5HRURdID0gZ19z
aWduYWxfbmV3KCJsb2FkX3Byb2dyZXNzX2NoYW5nZWQiLAorICAgIHdlYmtpdF9wYWdlX3NpZ25h
bHNbTE9BRF9QUk9HUkVTU19DSEFOR0VEXSA9IGdfc2lnbmFsX25ldygibG9hZF9wcm9ncmVzc19j
aGFuZ2VkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHBhZ2VDbGFzcyksCiAgICAg
ICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElP
TiksCiAgICAgICAgICAgICAwLApAQCAtMzEzLDcgKzMxMyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF9ndGtfcGFnZV9jbGFzc19pbml0KFcKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAg
ICAgICAgICAgR19UWVBFX0lOVCk7CiAgICAgCi0gICAgd2Via2l0X2d0a19wYWdlX3NpZ25hbHNb
TE9BRF9GSU5JU0hFRF0gPSBnX3NpZ25hbF9uZXcoImxvYWRfZmluaXNoZWQiLAorICAgIHdlYmtp
dF9wYWdlX3NpZ25hbHNbTE9BRF9GSU5JU0hFRF0gPSBnX3NpZ25hbF9uZXcoImxvYWRfZmluaXNo
ZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MocGFnZUNsYXNzKSwKICAgICAgICAg
ICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfQUNUSU9OKSwK
ICAgICAgICAgICAgIDAsCkBAIC0zMjEsMzAgKzMyMSwzMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
Z3RrX3BhZ2VfY2xhc3NfaW5pdChXCiAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgZ19j
Y2xvc3VyZV9tYXJzaGFsX1ZPSURfX09CSkVDVCwKICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAx
LAotICAgICAgICAgICAgV0VCS0lUX0dUS19UWVBFX0ZSQU1FKTsKKyAgICAgICAgICAgIFdFQktJ
VF9UWVBFX0ZSQU1FKTsKIAotICAgIHdlYmtpdF9ndGtfcGFnZV9zaWduYWxzW1RJVExFX0NIQU5H
RURdID0gZ19zaWduYWxfbmV3KCJ0aXRsZV9jaGFuZ2VkIiwKKyAgICB3ZWJraXRfcGFnZV9zaWdu
YWxzW1RJVExFX0NIQU5HRURdID0gZ19zaWduYWxfbmV3KCJ0aXRsZV9jaGFuZ2VkIiwKICAgICAg
ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHBhZ2VDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25h
bEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCiAgICAgICAgICAg
ICAwLAogICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICB3
ZWJraXRfZ3RrX21hcnNoYWxfVk9JRF9fU1RSSU5HX1NUUklORywKKyAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX1ZPSURfX1NUUklOR19TVFJJTkcsCiAgICAgICAgICAgICBHX1RZUEVfTk9ORSwg
MiwKICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIEdfVFlQRV9TVFJJTkcpOwogCi0gICAgd2Vi
a2l0X2d0a19wYWdlX3NpZ25hbHNbSE9WRVJJTkdfT1ZFUl9MSU5LXSA9IGdfc2lnbmFsX25ldygi
aG92ZXJpbmdfb3Zlcl9saW5rIiwKKyAgICB3ZWJraXRfcGFnZV9zaWduYWxzW0hPVkVSSU5HX09W
RVJfTElOS10gPSBnX3NpZ25hbF9uZXcoImhvdmVyaW5nX292ZXJfbGluayIsCiAgICAgICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhwYWdlQ2xhc3MpLAogICAgICAgICAgICAgKEdTaWduYWxGbGFn
cykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJT04pLAogICAgICAgICAgICAgMCwK
ICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgd2Via2l0
X2d0a19tYXJzaGFsX1ZPSURfX1NUUklOR19TVFJJTkcsCisgICAgICAgICAgICB3ZWJraXRfbWFy
c2hhbF9WT0lEX19TVFJJTkdfU1RSSU5HLAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDIsCiAg
ICAgICAgICAgICBHX1RZUEVfU1RSSU5HLAogICAgICAgICAgICAgR19UWVBFX1NUUklORyk7CiAK
LSAgICB3ZWJraXRfZ3RrX3BhZ2Vfc2lnbmFsc1tTVEFUVVNfQkFSX1RFWFRfQ0hBTkdFRF0gPSBn
X3NpZ25hbF9uZXcoInN0YXR1c19iYXJfdGV4dF9jaGFuZ2VkIiwKKyAgICB3ZWJraXRfcGFnZV9z
aWduYWxzW1NUQVRVU19CQVJfVEVYVF9DSEFOR0VEXSA9IGdfc2lnbmFsX25ldygic3RhdHVzX2Jh
cl90ZXh0X2NoYW5nZWQiLAogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MocGFnZUNsYXNz
KSwKICAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdO
QUxfQUNUSU9OKSwKICAgICAgICAgICAgIDAsCkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0X2d0a19wYWdlX2NsYXNzX2luaXQoVwogICAgICAgICAgICAgR19UWVBFX05PTkUs
IDEsCiAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsKIAotICAgIHdlYmtpdF9ndGtfcGFnZV9z
aWduYWxzW0lDT05EX0xPQURFRF0gPSBnX3NpZ25hbF9uZXcoImljb25fbG9hZGVkIiwKKyAgICB3
ZWJraXRfcGFnZV9zaWduYWxzW0lDT05EX0xPQURFRF0gPSBnX3NpZ25hbF9uZXcoImljb25fbG9h
ZGVkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHBhZ2VDbGFzcyksCiAgICAgICAg
ICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiks
CiAgICAgICAgICAgICAwLApAQCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9n
dGtfcGFnZV9jbGFzc19pbml0KFcKICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lE
X19WT0lELAogICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogCi0gICAgd2Via2l0X2d0a19w
YWdlX3NpZ25hbHNbU0VMRUNUSU9OX0NIQU5HRURdID0gZ19zaWduYWxfbmV3KCJzZWxlY3Rpb25f
Y2hhbmdlZCIsCisgICAgd2Via2l0X3BhZ2Vfc2lnbmFsc1tTRUxFQ1RJT05fQ0hBTkdFRF0gPSBn
X3NpZ25hbF9uZXcoInNlbGVjdGlvbl9jaGFuZ2VkIiwKICAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHBhZ2VDbGFzcyksCiAgICAgICAgICAgICAoR1NpZ25hbEZsYWdzKShHX1NJR05BTF9S
VU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCiAgICAgICAgICAgICAwLApAQCAtMzc2LDUwICsz
NzYsNTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X2d0a19wYWdlX2NsYXNzX2luaXQoVwogICAgIC8q
CiAgICAgICogaW1wbGVtZW50YXRpb25zIG9mIHZpcnR1YWwgbWV0aG9kcwogICAgICAqLwotICAg
IHBhZ2VDbGFzcy0+Y3JlYXRlX3BhZ2UgPSB3ZWJraXRfZ3RrX3BhZ2VfcmVhbF9jcmVhdGVfcGFn
ZTsKLSAgICBwYWdlQ2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X2d0a19wYWdl
X3JlYWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7Ci0gICAgcGFnZUNsYXNzLT5jaG9vc2VfZmlsZSA9
IHdlYmtpdF9ndGtfcGFnZV9yZWFsX2Nob29zZV9maWxlOwotICAgIHBhZ2VDbGFzcy0+amF2YV9z
Y3JpcHRfYWxlcnQgPSB3ZWJraXRfZ3RrX3BhZ2VfcmVhbF9qYXZhX3NjcmlwdF9hbGVydDsKLSAg
ICBwYWdlQ2xhc3MtPmphdmFfc2NyaXB0X2NvbmZpcm0gPSB3ZWJraXRfZ3RrX3BhZ2VfcmVhbF9q
YXZhX3NjcmlwdF9jb25maXJtOwotICAgIHBhZ2VDbGFzcy0+amF2YV9zY3JpcHRfcHJvbXB0ID0g
d2Via2l0X2d0a19wYWdlX3JlYWxfamF2YV9zY3JpcHRfcHJvbXB0OwotICAgIHBhZ2VDbGFzcy0+
amF2YV9zY3JpcHRfY29uc29sZV9tZXNzYWdlID0gd2Via2l0X2d0a19wYWdlX3JlYWxfamF2YV9z
Y3JpcHRfY29uc29sZV9tZXNzYWdlOworICAgIHBhZ2VDbGFzcy0+Y3JlYXRlX3BhZ2UgPSB3ZWJr
aXRfcGFnZV9yZWFsX2NyZWF0ZV9wYWdlOworICAgIHBhZ2VDbGFzcy0+bmF2aWdhdGlvbl9yZXF1
ZXN0ZWQgPSB3ZWJraXRfcGFnZV9yZWFsX25hdmlnYXRpb25fcmVxdWVzdGVkOworICAgIHBhZ2VD
bGFzcy0+Y2hvb3NlX2ZpbGUgPSB3ZWJraXRfcGFnZV9yZWFsX2Nob29zZV9maWxlOworICAgIHBh
Z2VDbGFzcy0+amF2YV9zY3JpcHRfYWxlcnQgPSB3ZWJraXRfcGFnZV9yZWFsX2phdmFfc2NyaXB0
X2FsZXJ0OworICAgIHBhZ2VDbGFzcy0+amF2YV9zY3JpcHRfY29uZmlybSA9IHdlYmtpdF9wYWdl
X3JlYWxfamF2YV9zY3JpcHRfY29uZmlybTsKKyAgICBwYWdlQ2xhc3MtPmphdmFfc2NyaXB0X3By
b21wdCA9IHdlYmtpdF9wYWdlX3JlYWxfamF2YV9zY3JpcHRfcHJvbXB0OworICAgIHBhZ2VDbGFz
cy0+amF2YV9zY3JpcHRfY29uc29sZV9tZXNzYWdlID0gd2Via2l0X3BhZ2VfcmVhbF9qYXZhX3Nj
cmlwdF9jb25zb2xlX21lc3NhZ2U7CiAKLSAgICBHX09CSkVDVF9DTEFTUyhwYWdlQ2xhc3MpLT5m
aW5hbGl6ZSA9IHdlYmtpdF9ndGtfcGFnZV9maW5hbGl6ZTsKKyAgICBHX09CSkVDVF9DTEFTUyhw
YWdlQ2xhc3MpLT5maW5hbGl6ZSA9IHdlYmtpdF9wYWdlX2ZpbmFsaXplOwogCiAgICAgR3RrV2lk
Z2V0Q2xhc3MqIHdpZGdldENsYXNzID0gR1RLX1dJREdFVF9DTEFTUyhwYWdlQ2xhc3MpOwotICAg
IHdpZGdldENsYXNzLT5yZWFsaXplID0gd2Via2l0X2d0a19wYWdlX3JlYWxpemU7Ci0gICAgd2lk
Z2V0Q2xhc3MtPm1hcCA9IHdlYmtpdF9ndGtfcGFnZV9tYXA7Ci0gICAgd2lkZ2V0Q2xhc3MtPmV4
cG9zZV9ldmVudCA9IHdlYmtpdF9ndGtfcGFnZV9leHBvc2VfZXZlbnQ7Ci0gICAgd2lkZ2V0Q2xh
c3MtPmtleV9wcmVzc19ldmVudCA9IHdlYmtpdF9ndGtfcGFnZV9rZXlfZXZlbnQ7Ci0gICAgd2lk
Z2V0Q2xhc3MtPmtleV9yZWxlYXNlX2V2ZW50ID0gd2Via2l0X2d0a19wYWdlX2tleV9ldmVudDsK
LSAgICB3aWRnZXRDbGFzcy0+YnV0dG9uX3ByZXNzX2V2ZW50ID0gd2Via2l0X2d0a19wYWdlX2J1
dHRvbl9ldmVudDsKLSAgICB3aWRnZXRDbGFzcy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSB3ZWJr
aXRfZ3RrX3BhZ2VfYnV0dG9uX2V2ZW50OwotICAgIHdpZGdldENsYXNzLT5tb3Rpb25fbm90aWZ5
X2V2ZW50ID0gd2Via2l0X2d0a19wYWdlX21vdGlvbl9ldmVudDsKLSAgICB3aWRnZXRDbGFzcy0+
c2Nyb2xsX2V2ZW50ID0gd2Via2l0X2d0a19wYWdlX3Njcm9sbF9ldmVudDsKLSAgICB3aWRnZXRD
bGFzcy0+c2l6ZV9hbGxvY2F0ZSA9IHdlYmtpdF9ndGtfcGFnZV9zaXplX2FsbG9jYXRlOworICAg
IHdpZGdldENsYXNzLT5yZWFsaXplID0gd2Via2l0X3BhZ2VfcmVhbGl6ZTsKKyAgICB3aWRnZXRD
bGFzcy0+bWFwID0gd2Via2l0X3BhZ2VfbWFwOworICAgIHdpZGdldENsYXNzLT5leHBvc2VfZXZl
bnQgPSB3ZWJraXRfcGFnZV9leHBvc2VfZXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPmtleV9wcmVz
c19ldmVudCA9IHdlYmtpdF9wYWdlX2tleV9ldmVudDsKKyAgICB3aWRnZXRDbGFzcy0+a2V5X3Jl
bGVhc2VfZXZlbnQgPSB3ZWJraXRfcGFnZV9rZXlfZXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPmJ1
dHRvbl9wcmVzc19ldmVudCA9IHdlYmtpdF9wYWdlX2J1dHRvbl9ldmVudDsKKyAgICB3aWRnZXRD
bGFzcy0+YnV0dG9uX3JlbGVhc2VfZXZlbnQgPSB3ZWJraXRfcGFnZV9idXR0b25fZXZlbnQ7Cisg
ICAgd2lkZ2V0Q2xhc3MtPm1vdGlvbl9ub3RpZnlfZXZlbnQgPSB3ZWJraXRfcGFnZV9tb3Rpb25f
ZXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPnNjcm9sbF9ldmVudCA9IHdlYmtpdF9wYWdlX3Njcm9s
bF9ldmVudDsKKyAgICB3aWRnZXRDbGFzcy0+c2l6ZV9hbGxvY2F0ZSA9IHdlYmtpdF9wYWdlX3Np
emVfYWxsb2NhdGU7CiAKICAgICBHdGtDb250YWluZXJDbGFzcyogY29udGFpbmVyQ2xhc3MgPSBH
VEtfQ09OVEFJTkVSX0NMQVNTKHBhZ2VDbGFzcyk7Ci0gICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9
IHdlYmtpdF9ndGtfcGFnZV9jb250YWluZXJfYWRkOwotICAgIGNvbnRhaW5lckNsYXNzLT5yZW1v
dmUgPSB3ZWJraXRfZ3RrX3BhZ2VfY29udGFpbmVyX3JlbW92ZTsKLSAgICBjb250YWluZXJDbGFz
cy0+Zm9yYWxsID0gd2Via2l0X2d0a19wYWdlX2NvbnRhaW5lcl9mb3JhbGw7CisgICAgY29udGFp
bmVyQ2xhc3MtPmFkZCA9IHdlYmtpdF9wYWdlX2NvbnRhaW5lcl9hZGQ7CisgICAgY29udGFpbmVy
Q2xhc3MtPnJlbW92ZSA9IHdlYmtpdF9wYWdlX2NvbnRhaW5lcl9yZW1vdmU7CisgICAgY29udGFp
bmVyQ2xhc3MtPmZvcmFsbCA9IHdlYmtpdF9wYWdlX2NvbnRhaW5lcl9mb3JhbGw7CiAKICAgICAv
KgogICAgICAqIG1ha2UgdXMgc2Nyb2xsYWJsZSAoZS5nLiBhZGRhYmxlIHRvIGEgR3RrU2Nyb2xs
ZWRXaW5kb3cpCiAgICAgICovCi0gICAgcGFnZUNsYXNzLT5zZXRfc2Nyb2xsX2FkanVzdG1lbnRz
ID0gd2Via2l0X2d0a19wYWdlX3NldF9zY3JvbGxfYWRqdXN0bWVudHM7CisgICAgcGFnZUNsYXNz
LT5zZXRfc2Nyb2xsX2FkanVzdG1lbnRzID0gd2Via2l0X3BhZ2Vfc2V0X3Njcm9sbF9hZGp1c3Rt
ZW50czsKICAgICBHVEtfV0lER0VUX0NMQVNTKHBhZ2VDbGFzcyktPnNldF9zY3JvbGxfYWRqdXN0
bWVudHNfc2lnbmFsID0gZ19zaWduYWxfbmV3KCJzZXRfc2Nyb2xsX2FkanVzdG1lbnRzIiwKICAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHBhZ2VDbGFzcyksCiAgICAgICAgICAgICAoR1Np
Z25hbEZsYWdzKShHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX0FDVElPTiksCi0gICAgICAg
ICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0R3RrUGFnZUNsYXNzLCBzZXRfc2Nyb2xsX2FkanVz
dG1lbnRzKSwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRQYWdlQ2xhc3MsIHNl
dF9zY3JvbGxfYWRqdXN0bWVudHMpLAogICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSAgICAgICAg
ICAgIHdlYmtpdF9ndGtfbWFyc2hhbF9WT0lEX19PQkpFQ1RfT0JKRUNULAorICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfVk9JRF9fT0JKRUNUX09CSkVDVCwKICAgICAgICAgICAgIEdfVFlQRV9O
T05FLCAyLAogICAgICAgICAgICAgR1RLX1RZUEVfQURKVVNUTUVOVCwgR1RLX1RZUEVfQURKVVNU
TUVOVCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9ndGtfcGFnZV9pbml0KFdlYktpdEd0a1Bh
Z2UqIHBhZ2UpCitzdGF0aWMgdm9pZCB3ZWJraXRfcGFnZV9pbml0KFdlYktpdFBhZ2UqIHBhZ2Up
CiB7Ci0gICAgV2ViS2l0R3RrUGFnZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX0dUS19QQUdF
X0dFVF9QUklWQVRFKFdFQktJVF9HVEtfUEFHRShwYWdlKSk7CisgICAgV2ViS2l0UGFnZVByaXZh
dGUqIHBhZ2VEYXRhID0gV0VCS0lUX1BBR0VfR0VUX1BSSVZBVEUoV0VCS0lUX1BBR0UocGFnZSkp
OwogICAgIHBhZ2VEYXRhLT5wYWdlID0gbmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50
KHBhZ2UpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNsaWVudCwgbmV3IFdlYktpdDo6RWRpdG9y
Q2xpZW50KHBhZ2UpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50LCBuZXcgV2ViS2l0OjpJbnNwZWN0
b3JDbGllbnQpOwogCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZURhdGEtPnBhZ2UtPnNl
dHRpbmdzKCk7CkBAIC00MzYsNzUgKzQzNiw3NSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZ3RrX3Bh
Z2VfaW5pdChXZWJLaXRHCiAgICAgc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgiQXJp
YWwiKTsKIAogICAgIEdUS19XSURHRVRfU0VUX0ZMQUdTKHBhZ2UsIEdUS19DQU5fRk9DVVMpOwot
ICAgIHBhZ2VEYXRhLT5tYWluRnJhbWUgPSBXRUJLSVRfR1RLX0ZSQU1FKHdlYmtpdF9ndGtfZnJh
bWVfbmV3KHBhZ2UpKTsKKyAgICBwYWdlRGF0YS0+bWFpbkZyYW1lID0gV0VCS0lUX0ZSQU1FKHdl
YmtpdF9mcmFtZV9uZXcocGFnZSkpOwogfQogCi1HdGtXaWRnZXQqIHdlYmtpdF9ndGtfcGFnZV9u
ZXcodm9pZCkKK0d0a1dpZGdldCogd2Via2l0X3BhZ2VfbmV3KHZvaWQpCiB7Ci0gICAgV2ViS2l0
R3RrUGFnZSogcGFnZSA9IFdFQktJVF9HVEtfUEFHRShnX29iamVjdF9uZXcoV0VCS0lUX0dUS19U
WVBFX1BBR0UsIE5VTEwpKTsKKyAgICBXZWJLaXRQYWdlKiBwYWdlID0gV0VCS0lUX1BBR0UoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1BBR0UsIE5VTEwpKTsKIAogICAgIHJldHVybiBHVEtfV0lE
R0VUKHBhZ2UpOwogfQogCi12b2lkIHdlYmtpdF9ndGtfcGFnZV9zZXRfc2V0dGluZ3MoV2ViS2l0
R3RrUGFnZSogcGFnZSwgV2ViS2l0R3RrU2V0dGluZ3MqIHNldHRpbmdzKQordm9pZCB3ZWJraXRf
cGFnZV9zZXRfc2V0dGluZ3MoV2ViS2l0UGFnZSogcGFnZSwgV2ViS2l0U2V0dGluZ3MqIHNldHRp
bmdzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVdlYktpdEd0a1NldHRpbmdzKiB3
ZWJraXRfZ3RrX3BhZ2VfZ2V0X3NldHRpbmdzKFdlYktpdEd0a1BhZ2UqIHBhZ2UpCitXZWJLaXRT
ZXR0aW5ncyogd2Via2l0X3BhZ2VfZ2V0X3NldHRpbmdzKFdlYktpdFBhZ2UqIHBhZ2UpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCB3ZWJraXRfZ3Rr
X3BhZ2VfZ29fYmFja3dhcmQoV2ViS2l0R3RrUGFnZSogcGFnZSkKK3ZvaWQgd2Via2l0X3BhZ2Vf
Z29fYmFja3dhcmQoV2ViS2l0UGFnZSogcGFnZSkKIHsKLSAgICBXZWJLaXRHdGtQYWdlUHJpdmF0
ZSogcGFnZURhdGEgPSBXRUJLSVRfR1RLX1BBR0VfR0VUX1BSSVZBVEUocGFnZSk7Ci0gICAgV2Vi
S2l0R3RrRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfR1RLX0ZSQU1FX0dFVF9QUklW
QVRFKHBhZ2VEYXRhLT5tYWluRnJhbWUpOworICAgIFdlYktpdFBhZ2VQcml2YXRlKiBwYWdlRGF0
YSA9IFdFQktJVF9QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOworICAgIFdlYktpdEZyYW1lUHJpdmF0
ZSogZnJhbWVEYXRhID0gV0VCS0lUX0ZSQU1FX0dFVF9QUklWQVRFKHBhZ2VEYXRhLT5tYWluRnJh
bWUpOwogICAgIGZyYW1lRGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5nb0JhY2tPckZvcndhcmQoLTEp
OwogfQogCi12b2lkIHdlYmtpdF9ndGtfcGFnZV9nb19mb3J3YXJkKFdlYktpdEd0a1BhZ2UqIHBh
Z2UpCit2b2lkIHdlYmtpdF9wYWdlX2dvX2ZvcndhcmQoV2ViS2l0UGFnZSogcGFnZSkKIHsKLSAg
ICBXZWJLaXRHdGtQYWdlUHJpdmF0ZSogcGFnZURhdGEgPSBXRUJLSVRfR1RLX1BBR0VfR0VUX1BS
SVZBVEUocGFnZSk7Ci0gICAgV2ViS2l0R3RrRnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBXRUJL
SVRfR1RLX0ZSQU1FX0dFVF9QUklWQVRFKHBhZ2VEYXRhLT5tYWluRnJhbWUpOworICAgIFdlYktp
dFBhZ2VQcml2YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOwor
ICAgIFdlYktpdEZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX0ZSQU1FX0dFVF9QUklW
QVRFKHBhZ2VEYXRhLT5tYWluRnJhbWUpOwogICAgIGZyYW1lRGF0YS0+ZnJhbWUtPmxvYWRlcigp
LT5nb0JhY2tPckZvcndhcmQoMSk7CiB9CiAKLWdib29sZWFuIHdlYmtpdF9ndGtfcGFnZV9jYW5f
Z29fYmFja3dhcmQoV2ViS2l0R3RrUGFnZSogcGFnZSkKK2dib29sZWFuIHdlYmtpdF9wYWdlX2Nh
bl9nb19iYWNrd2FyZChXZWJLaXRQYWdlKiBwYWdlKQogewotICAgIFdlYktpdEd0a1BhZ2VQcml2
YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9HVEtfUEFHRV9HRVRfUFJJVkFURShwYWdlKTsKLSAgICBX
ZWJLaXRHdGtGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9HVEtfRlJBTUVfR0VUX1BS
SVZBVEUocGFnZURhdGEtPm1haW5GcmFtZSk7CisgICAgV2ViS2l0UGFnZVByaXZhdGUqIHBhZ2VE
YXRhID0gV0VCS0lUX1BBR0VfR0VUX1BSSVZBVEUocGFnZSk7CisgICAgV2ViS2l0RnJhbWVQcml2
YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfRlJBTUVfR0VUX1BSSVZBVEUocGFnZURhdGEtPm1haW5G
cmFtZSk7CiAgICAgcmV0dXJuIGZyYW1lRGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5jYW5Hb0JhY2tP
ckZvcndhcmQoLTEpOwogfQogCi1nYm9vbGVhbiB3ZWJraXRfZ3RrX3BhZ2VfY2FuX2dvX2Zvcndh
cmQoV2ViS2l0R3RrUGFnZSogcGFnZSkKK2dib29sZWFuIHdlYmtpdF9wYWdlX2Nhbl9nb19mb3J3
YXJkKFdlYktpdFBhZ2UqIHBhZ2UpCiB7Ci0gICAgV2ViS2l0R3RrUGFnZVByaXZhdGUqIHBhZ2VE
YXRhID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOwotICAgIFdlYktpdEd0a0Zy
YW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX0dUS19GUkFNRV9HRVRfUFJJVkFURShwYWdl
RGF0YS0+bWFpbkZyYW1lKTsKKyAgICBXZWJLaXRQYWdlUHJpdmF0ZSogcGFnZURhdGEgPSBXRUJL
SVRfUEFHRV9HRVRfUFJJVkFURShwYWdlKTsKKyAgICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1l
RGF0YSA9IFdFQktJVF9GUkFNRV9HRVRfUFJJVkFURShwYWdlRGF0YS0+bWFpbkZyYW1lKTsKICAg
ICByZXR1cm4gZnJhbWVEYXRhLT5mcmFtZS0+bG9hZGVyKCktPmNhbkdvQmFja09yRm9yd2FyZCgx
KTsKIH0KIAotdm9pZCB3ZWJraXRfZ3RrX3BhZ2Vfb3BlbihXZWJLaXRHdGtQYWdlKiBwYWdlLCBj
b25zdCBnY2hhciogdXJsKQordm9pZCB3ZWJraXRfcGFnZV9vcGVuKFdlYktpdFBhZ2UqIHBhZ2Us
IGNvbnN0IGdjaGFyKiB1cmwpCiB7Ci0gICAgV2ViS2l0R3RrUGFnZVByaXZhdGUqIHBhZ2VEYXRh
ID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOwotICAgIFdlYktpdEd0a0ZyYW1l
UHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX0dUS19GUkFNRV9HRVRfUFJJVkFURShwYWdlRGF0
YS0+bWFpbkZyYW1lKTsKKyAgICBXZWJLaXRQYWdlUHJpdmF0ZSogcGFnZURhdGEgPSBXRUJLSVRf
UEFHRV9HRVRfUFJJVkFURShwYWdlKTsKKyAgICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1lRGF0
YSA9IFdFQktJVF9GUkFNRV9HRVRfUFJJVkFURShwYWdlRGF0YS0+bWFpbkZyYW1lKTsKIAogICAg
IERlcHJlY2F0ZWRTdHJpbmcgc3RyaW5nID0gRGVwcmVjYXRlZFN0cmluZzo6ZnJvbVV0ZjgodXJs
KTsKICAgICBmcmFtZURhdGEtPmZyYW1lLT5sb2FkZXIoKS0+bG9hZChSZXNvdXJjZVJlcXVlc3Qo
S1VSTChzdHJpbmcpKSk7CiB9CiAKLXZvaWQgd2Via2l0X2d0a19wYWdlX3JlbG9hZChXZWJLaXRH
dGtQYWdlKiBwYWdlKQordm9pZCB3ZWJraXRfcGFnZV9yZWxvYWQoV2ViS2l0UGFnZSogcGFnZSkK
IHsKLSAgICBXZWJLaXRHdGtQYWdlUHJpdmF0ZSogcGFnZURhdGEgPSBXRUJLSVRfR1RLX1BBR0Vf
R0VUX1BSSVZBVEUocGFnZSk7Ci0gICAgV2ViS2l0R3RrRnJhbWVQcml2YXRlKiBmcmFtZURhdGEg
PSBXRUJLSVRfR1RLX0ZSQU1FX0dFVF9QUklWQVRFKHBhZ2VEYXRhLT5tYWluRnJhbWUpOworICAg
IFdlYktpdFBhZ2VQcml2YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9QQUdFX0dFVF9QUklWQVRFKHBh
Z2UpOworICAgIFdlYktpdEZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lUX0ZSQU1FX0dF
VF9QUklWQVRFKHBhZ2VEYXRhLT5tYWluRnJhbWUpOwogICAgIGZyYW1lRGF0YS0+ZnJhbWUtPmxv
YWRlcigpLT5yZWxvYWQoKTsKIH0KIAotdm9pZCB3ZWJraXRfZ3RrX3BhZ2VfbG9hZF9zdHJpbmco
V2ViS2l0R3RrUGFnZSogcGFnZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBj
b250ZW50TWltZVR5cGUsIGNvbnN0IGdjaGFyKiBjb250ZW50RW5jb2RpbmcsIGNvbnN0IGdjaGFy
KiBiYXNlVXJsKQordm9pZCB3ZWJraXRfcGFnZV9sb2FkX3N0cmluZyhXZWJLaXRQYWdlKiBwYWdl
LCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGNvbnRlbnRNaW1lVHlwZSwgY29u
c3QgZ2NoYXIqIGNvbnRlbnRFbmNvZGluZywgY29uc3QgZ2NoYXIqIGJhc2VVcmwpCiB7Ci0gICAg
V2ViS2l0R3RrUGFnZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklW
QVRFKHBhZ2UpOwotICAgIFdlYktpdEd0a0ZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gV0VCS0lU
X0dUS19GUkFNRV9HRVRfUFJJVkFURShwYWdlRGF0YS0+bWFpbkZyYW1lKTsKKyAgICBXZWJLaXRQ
YWdlUHJpdmF0ZSogcGFnZURhdGEgPSBXRUJLSVRfUEFHRV9HRVRfUFJJVkFURShwYWdlKTsKKyAg
ICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdFQktJVF9GUkFNRV9HRVRfUFJJVkFU
RShwYWdlRGF0YS0+bWFpbkZyYW1lKTsKICAgICAKICAgICBLVVJMIHVybChEZXByZWNhdGVkU3Ry
aW5nOjpmcm9tVXRmOChiYXNlVXJsKSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyID0gbmV3IFNoYXJlZEJ1ZmZlcihzdHJkdXAoY29udGVudCksIHN0cmxlbihjb250ZW50
KSk7ICAgIApAQCAtNTEzLDI0ICs1MTMsMjQgQEAgdm9pZCB3ZWJraXRfZ3RrX3BhZ2VfbG9hZF9z
dHJpbmcoV2ViS2l0RwogICAgIGZyYW1lRGF0YS0+ZnJhbWUtPmxvYWRlcigpLT5sb2FkKFJlc291
cmNlUmVxdWVzdCh1cmwpLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAKLXZvaWQgd2Via2l0X2d0a19w
YWdlX2xvYWRfaHRtbF9zdHJpbmcoV2ViS2l0R3RrUGFnZSogcGFnZSwgY29uc3QgZ2NoYXIqIGNv
bnRlbnQsIGNvbnN0IGdjaGFyKiBiYXNlVXJsKQordm9pZCB3ZWJraXRfcGFnZV9sb2FkX2h0bWxf
c3RyaW5nKFdlYktpdFBhZ2UqIHBhZ2UsIGNvbnN0IGdjaGFyKiBjb250ZW50LCBjb25zdCBnY2hh
ciogYmFzZVVybCkKIHsKLSAgICB3ZWJraXRfZ3RrX3BhZ2VfbG9hZF9zdHJpbmcocGFnZSwgY29u
dGVudCwgInRleHQvaHRtbCIsICJVVEYtOCIsIGJhc2VVcmwpOworICAgIHdlYmtpdF9wYWdlX2xv
YWRfc3RyaW5nKHBhZ2UsIGNvbnRlbnQsICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBiYXNlVXJsKTsK
IH0KIAotdm9pZCB3ZWJraXRfZ3RrX3BhZ2Vfc3RvcF9sb2FkaW5nKFdlYktpdEd0a1BhZ2UqIHBh
Z2UpCit2b2lkIHdlYmtpdF9wYWdlX3N0b3BfbG9hZGluZyhXZWJLaXRQYWdlKiBwYWdlKQogewot
ICAgIFdlYktpdEd0a1BhZ2VQcml2YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9HVEtfUEFHRV9HRVRf
UFJJVkFURShwYWdlKTsKLSAgICBXZWJLaXRHdGtGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IFdF
QktJVF9HVEtfRlJBTUVfR0VUX1BSSVZBVEUocGFnZURhdGEtPm1haW5GcmFtZSk7CisgICAgV2Vi
S2l0UGFnZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX1BBR0VfR0VUX1BSSVZBVEUocGFnZSk7
CisgICAgV2ViS2l0RnJhbWVQcml2YXRlKiBmcmFtZURhdGEgPSBXRUJLSVRfRlJBTUVfR0VUX1BS
SVZBVEUocGFnZURhdGEtPm1haW5GcmFtZSk7CiAgICAgCiAgICAgaWYgKEZyYW1lTG9hZGVyKiBs
b2FkZXIgPSBmcmFtZURhdGEtPmZyYW1lLT5sb2FkZXIoKSkKICAgICAgICAgbG9hZGVyLT5zdG9w
QWxsTG9hZGVycygpOwogICAgICAgICAKIH0KIAotV2ViS2l0R3RrRnJhbWUqIHdlYmtpdF9ndGtf
cGFnZV9nZXRfbWFpbl9mcmFtZShXZWJLaXRHdGtQYWdlKiBwYWdlKQorV2ViS2l0RnJhbWUqIHdl
YmtpdF9wYWdlX2dldF9tYWluX2ZyYW1lKFdlYktpdFBhZ2UqIHBhZ2UpCiB7Ci0gICAgV2ViS2l0
R3RrUGFnZVByaXZhdGUqIHBhZ2VEYXRhID0gV0VCS0lUX0dUS19QQUdFX0dFVF9QUklWQVRFKHBh
Z2UpOworICAgIFdlYktpdFBhZ2VQcml2YXRlKiBwYWdlRGF0YSA9IFdFQktJVF9QQUdFX0dFVF9Q
UklWQVRFKHBhZ2UpOwogICAgIHJldHVybiBwYWdlRGF0YS0+bWFpbkZyYW1lOwogfQogfQpJbmRl
eDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvQXBpL3dlYmtpdGd0a3BhZ2UuaAkocmV2aXNpb24gMjYwMTUpCisrKyBXZWJLaXQvZ3RrL0Fw
aS93ZWJraXRndGtwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXRUJLSVRfR1RLX1BBR0VfSAotI2RlZmluZSBXRUJLSVRf
R1RLX1BBR0VfSAorI2lmbmRlZiBXRUJLSVRfUEFHRV9ICisjZGVmaW5lIFdFQktJVF9QQUdFX0gK
IAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAtMzYsMjcgKzM2LDI3IEBACiAKIEdfQkVHSU5f
REVDTFMKIAotI2RlZmluZSBXRUJLSVRfR1RLX1RZUEVfUEFHRSAgICAgICAgICAgICh3ZWJraXRf
Z3RrX3BhZ2VfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX0dUS19QQUdFKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9HVEtfVFlQRV9Q
QUdFLCBXZWJLaXRHdGtQYWdlKSkKLSNkZWZpbmUgV0VCS0lUX0dUS19QQUdFX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9HVEtfVFlQRV9Q
QUdFLCBXZWJLaXRHdGtQYWdlQ2xhc3MpKQotI2RlZmluZSBXRUJLSVRfR1RLX0lTX1BBR0Uob2Jq
KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX0dUS19U
WVBFX1BBR0UpKQotI2RlZmluZSBXRUJLSVRfR1RLX0lTX1BBR0VfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX0dUS19UWVBFX1BBR0UpKQotI2Rl
ZmluZSBXRUJLSVRfR1RLX1BBR0VfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX0dUS19UWVBFX1BBR0UsIFdlYktpdEd0a1BhZ2VDbGFzcykp
CisjZGVmaW5lIFdFQktJVF9UWVBFX1BBR0UgICAgICAgICAgICAod2Via2l0X3BhZ2VfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1BBR0Uob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfUEFHRSwgV2ViS2l0UGFnZSkpCisjZGVm
aW5lIFdFQktJVF9QQUdFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX1BBR0UsIFdlYktpdFBhZ2VDbGFzcykpCisjZGVmaW5lIFdF
QktJVF9JU19QQUdFKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX1BBR0UpKQorI2RlZmluZSBXRUJLSVRfSVNfUEFHRV9DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9QQUdFKSkK
KyNkZWZpbmUgV0VCS0lUX1BBR0VfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfUEFHRSwgV2ViS2l0UGFnZUNsYXNzKSkKIAogCiB0
eXBlZGVmIGVudW0gewotICAgIFdFQktJVF9HVEtfQUNDRVBUX05BVklHQVRJT05fUkVRVUVTVCwK
LSAgICBXRUJLSVRfR1RLX0lHTk9SRV9OQVZJR0FUSU9OX1JFUVVFU1QsCi0gICAgV0VCS0lUX0dU
S19ET1dOTE9BRF9OQVZJR0FUSU9OX1JFUVVFU1QKLX0gV0VCS0lUX0dUS19OQVZJR0FUSU9OX1JF
UVVFU1RfUkVTUE9OU0U7CisgICAgV0VCS0lUX0FDQ0VQVF9OQVZJR0FUSU9OX1JFUVVFU1QsCisg
ICAgV0VCS0lUX0lHTk9SRV9OQVZJR0FUSU9OX1JFUVVFU1QsCisgICAgV0VCS0lUX0RPV05MT0FE
X05BVklHQVRJT05fUkVRVUVTVAorfSBXRUJLSVRfTkFWSUdBVElPTl9SRVFVRVNUX1JFU1BPTlNF
OwogCiAKIAotc3RydWN0IF9XZWJLaXRHdGtQYWdlIHsKK3N0cnVjdCBfV2ViS2l0UGFnZSB7CiAg
ICAgR3RrQ29udGFpbmVyIHBhcmVudDsKIH07CiAKLXN0cnVjdCBfV2ViS2l0R3RrUGFnZUNsYXNz
IHsKK3N0cnVjdCBfV2ViS2l0UGFnZUNsYXNzIHsKICAgICBHdGtDb250YWluZXJDbGFzcyBwYXJl
bnQ7CiAKICAgICAvKgpAQCAtNjUsODcgKzY1LDg3IEBAIHN0cnVjdCBfV2ViS2l0R3RrUGFnZUNs
YXNzIHsKICAgICAgKiByZXF1aXJlIHNvbWVvbmUgZG9pbmcgYSBnX3NpZ25hbF9zdG9wX2VtaXNz
aW9uX2J5X25hbWUKICAgICAgKiBXZWJVSURlbGVnYXRlIGhhcyBub3RoaW5nIGZvciBjcmVhdGVf
ZnJhbWUsIFdlYlBvbGljeURlbGVnYXRlIGFzIHdlbGwuLi4KICAgICAgKi8KLSAgICBXZWJLaXRH
dGtQYWdlKiAgKCpjcmVhdGVfcGFnZSkgIChXZWJLaXRHdGtQYWdlKiBwYWdlKTsKKyAgICBXZWJL
aXRQYWdlKiAgKCpjcmVhdGVfcGFnZSkgIChXZWJLaXRQYWdlKiBwYWdlKTsKIAogICAgIC8qCiAg
ICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lEZWNpc2lv
bkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKICAgICAgKi8KLSAgICBXRUJLSVRfR1RLX05BVklH
QVRJT05fUkVRVUVTVF9SRVNQT05TRSAoKm5hdmlnYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0R3Rr
UGFnZSogcGFnZSwgV2ViS2l0R3RrRnJhbWUqIGZyYW1lLCBXZWJLaXRHdGtOZXR3b3JrUmVxdWVz
dCogcmVxdWVzdCk7CisgICAgV0VCS0lUX05BVklHQVRJT05fUkVRVUVTVF9SRVNQT05TRSAoKm5h
dmlnYXRpb25fcmVxdWVzdGVkKSAoV2ViS2l0UGFnZSogcGFnZSwgV2ViS2l0RnJhbWUqIGZyYW1l
LCBXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCk7CiAKICAgICAvKgogICAgICAqIFRPRE86
IERJU0NVU1M6IFNob3VsZCB0aGVzZSBiZSBzaWduYWxzIGFzIHdlbGw/CiAgICAgICovCi0gICAg
Z2NoYXIqICgqY2hvb3NlX2ZpbGUpIChXZWJLaXRHdGtQYWdlKiBwYWdlLCBXZWJLaXRHdGtGcmFt
ZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBvbGRfZmlsZSk7Ci0gICAgdm9pZCAgICgqamF2YV9zY3Jp
cHRfYWxlcnQpIChXZWJLaXRHdGtQYWdlKiBwYWdlLCBXZWJLaXRHdGtGcmFtZSogZnJhbWUsIGNv
bnN0IGdjaGFyKiBhbGVydF9tZXNzYWdlKTsKLSAgICBnYm9vbGVhbiAgICgqamF2YV9zY3JpcHRf
Y29uZmlybSkgKFdlYktpdEd0a1BhZ2UqIHBhZ2UsIFdlYktpdEd0a0ZyYW1lKiBmcmFtZSwgY29u
c3QgZ2NoYXIqIGNvbmZpcm1fbWVzc2FnZSk7Ci0gICAgZ2NoYXIqICgqamF2YV9zY3JpcHRfcHJv
bXB0KSAoV2ViS2l0R3RrUGFnZSogcGFnZSwgV2ViS2l0R3RrRnJhbWUqIGZyYW1lLCBjb25zdCBn
Y2hhciogbWVzc2FnZSwgY29uc3QgZ2NoYXIqIGRlZmF1bHRfdmFsdWUpOwotICAgIHZvaWQgICAo
KmphdmFfc2NyaXB0X2NvbnNvbGVfbWVzc2FnZSkgKFdlYktpdEd0a1BhZ2UqLCBjb25zdCBnY2hh
ciogbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVfbnVtYmVyLCBjb25zdCBnY2hhciogc291cmNl
X2lkKTsKKyAgICBnY2hhciogKCpjaG9vc2VfZmlsZSkgKFdlYktpdFBhZ2UqIHBhZ2UsIFdlYktp
dEZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIG9sZF9maWxlKTsKKyAgICB2b2lkICAgKCpqYXZh
X3NjcmlwdF9hbGVydCkgKFdlYktpdFBhZ2UqIHBhZ2UsIFdlYktpdEZyYW1lKiBmcmFtZSwgY29u
c3QgZ2NoYXIqIGFsZXJ0X21lc3NhZ2UpOworICAgIGdib29sZWFuICAgKCpqYXZhX3NjcmlwdF9j
b25maXJtKSAoV2ViS2l0UGFnZSogcGFnZSwgV2ViS2l0RnJhbWUqIGZyYW1lLCBjb25zdCBnY2hh
ciogY29uZmlybV9tZXNzYWdlKTsKKyAgICBnY2hhciogKCpqYXZhX3NjcmlwdF9wcm9tcHQpIChX
ZWJLaXRQYWdlKiBwYWdlLCBXZWJLaXRGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBtZXNzYWdl
LCBjb25zdCBnY2hhciogZGVmYXVsdF92YWx1ZSk7CisgICAgdm9pZCAgICgqamF2YV9zY3JpcHRf
Y29uc29sZV9tZXNzYWdlKSAoV2ViS2l0UGFnZSosIGNvbnN0IGdjaGFyKiBtZXNzYWdlLCB1bnNp
Z25lZCBpbnQgbGluZV9udW1iZXIsIGNvbnN0IGdjaGFyKiBzb3VyY2VfaWQpOwogCiAgICAgLyoK
ICAgICAgKiBpbnRlcm5hbAogICAgICAqLwotICAgIHZvaWQgICAoKnNldF9zY3JvbGxfYWRqdXN0
bWVudHMpIChXZWJLaXRHdGtQYWdlKiwgR3RrQWRqdXN0bWVudCosIEd0a0FkanVzdG1lbnQqKTsK
KyAgICB2b2lkICAgKCpzZXRfc2Nyb2xsX2FkanVzdG1lbnRzKSAoV2ViS2l0UGFnZSosIEd0a0Fk
anVzdG1lbnQqLCBHdGtBZGp1c3RtZW50Kik7CiB9OwogCi1XRUJLSVRfR1RLX0FQSSBHVHlwZQot
d2Via2l0X2d0a19wYWdlX2dldF90eXBlICh2b2lkKTsKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtp
dF9wYWdlX2dldF90eXBlICh2b2lkKTsKIAotV0VCS0lUX0dUS19BUEkgR3RrV2lkZ2V0Kgotd2Vi
a2l0X2d0a19wYWdlX25ldyAodm9pZCk7CitXRUJLSVRfQVBJIEd0a1dpZGdldCoKK3dlYmtpdF9w
YWdlX25ldyAodm9pZCk7CiAKLVdFQktJVF9HVEtfQVBJIHZvaWQKLXdlYmtpdF9ndGtfcGFnZV9z
ZXRfc2V0dGluZ3MgKFdlYktpdEd0a1BhZ2UqIHBhZ2UsIFdlYktpdEd0a1NldHRpbmdzKiBzZXR0
aW5ncyk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wYWdlX3NldF9zZXR0aW5ncyAoV2ViS2l0
UGFnZSogcGFnZSwgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKTsKIAotV0VCS0lUX0dUS19BUEkg
V2ViS2l0R3RrU2V0dGluZ3MqCi13ZWJraXRfZ3RrX3BhZ2VfZ2V0X3NldHRpbmdzIChXZWJLaXRH
dGtQYWdlKiBwYWdlKTsKK1dFQktJVF9BUEkgV2ViS2l0U2V0dGluZ3MqCit3ZWJraXRfcGFnZV9n
ZXRfc2V0dGluZ3MgKFdlYktpdFBhZ2UqIHBhZ2UpOwogCi1XRUJLSVRfR1RLX0FQSSBnYm9vbGVh
bgotd2Via2l0X2d0a19wYWdlX2Nhbl9jdXQgKFdlYktpdEd0a1BhZ2UqIHBhZ2UpOworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3BhZ2VfY2FuX2N1dCAoV2ViS2l0UGFnZSogcGFnZSk7CiAK
LVdFQktJVF9HVEtfQVBJIGdib29sZWFuCi13ZWJraXRfZ3RrX3BhZ2VfY2FuX2NvcHkgKFdlYktp
dEd0a1BhZ2UqIHBhZ2UpOworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3BhZ2VfY2FuX2Nv
cHkgKFdlYktpdFBhZ2UqIHBhZ2UpOwogCi1XRUJLSVRfR1RLX0FQSSBnYm9vbGVhbgotd2Via2l0
X2d0a19wYWdlX2Nhbl9wYXN0ZSAoV2ViS2l0R3RrUGFnZSogcGFnZSk7CitXRUJLSVRfQVBJIGdi
b29sZWFuCit3ZWJraXRfcGFnZV9jYW5fcGFzdGUgKFdlYktpdFBhZ2UqIHBhZ2UpOwogCi1XRUJL
SVRfR1RLX0FQSSB2b2lkCi13ZWJraXRfZ3RrX3BhZ2VfY3V0IChXZWJLaXRHdGtQYWdlKiBwYWdl
KTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BhZ2VfY3V0IChXZWJLaXRQYWdlKiBwYWdlKTsK
IAotV0VCS0lUX0dUS19BUEkgdm9pZAotd2Via2l0X2d0a19wYWdlX2NvcHkgKFdlYktpdEd0a1Bh
Z2UqIHBhZ2UpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcGFnZV9jb3B5IChXZWJLaXRQYWdl
KiBwYWdlKTsKIAotV0VCS0lUX0dUS19BUEkgdm9pZAotd2Via2l0X2d0a19wYWdlX3Bhc3RlIChX
ZWJLaXRHdGtQYWdlKiBwYWdlKTsKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BhZ2VfcGFzdGUg
KFdlYktpdFBhZ2UqIHBhZ2UpOwogCi1XRUJLSVRfR1RLX0FQSSBnYm9vbGVhbgotd2Via2l0X2d0
a19wYWdlX2Nhbl9nb19iYWNrd2FyZCAoV2ViS2l0R3RrUGFnZSogcGFnZSk7CitXRUJLSVRfQVBJ
IGdib29sZWFuCit3ZWJraXRfcGFnZV9jYW5fZ29fYmFja3dhcmQgKFdlYktpdFBhZ2UqIHBhZ2Up
OwogCi1XRUJLSVRfR1RLX0FQSSBnYm9vbGVhbgotd2Via2l0X2d0a19wYWdlX2Nhbl9nb19mb3J3
YXJkIChXZWJLaXRHdGtQYWdlKiBwYWdlKTsKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9w
YWdlX2Nhbl9nb19mb3J3YXJkIChXZWJLaXRQYWdlKiBwYWdlKTsKIAotV0VCS0lUX0dUS19BUEkg
dm9pZAotd2Via2l0X2d0a19wYWdlX2dvX2JhY2t3YXJkIChXZWJLaXRHdGtQYWdlKiBwYWdlKTsK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3BhZ2VfZ29fYmFja3dhcmQgKFdlYktpdFBhZ2UqIHBh
Z2UpOwogCi1XRUJLSVRfR1RLX0FQSSB2b2lkCi13ZWJraXRfZ3RrX3BhZ2VfZ29fZm9yd2FyZCAo
V2ViS2l0R3RrUGFnZSogcGFnZSk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wYWdlX2dvX2Zv
cndhcmQgKFdlYktpdFBhZ2UqIHBhZ2UpOwogCi1XRUJLSVRfR1RLX0FQSSB2b2lkCi13ZWJraXRf
Z3RrX3BhZ2Vfc3RvcF9sb2FkaW5nIChXZWJLaXRHdGtQYWdlKiBwYWdlKTsKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X3BhZ2Vfc3RvcF9sb2FkaW5nIChXZWJLaXRQYWdlKiBwYWdlKTsKIAotV0VC
S0lUX0dUS19BUEkgdm9pZAotd2Via2l0X2d0a19wYWdlX29wZW4gKFdlYktpdEd0a1BhZ2UqIHBh
Z2UsIGNvbnN0IGdjaGFyKiB1cmwpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcGFnZV9vcGVu
IChXZWJLaXRQYWdlKiBwYWdlLCBjb25zdCBnY2hhciogdXJsKTsKIAotV0VCS0lUX0dUS19BUEkg
dm9pZAotd2Via2l0X2d0a19wYWdlX3JlbG9hZCAoV2ViS2l0R3RrUGFnZSAqcGFnZSk7CitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF9wYWdlX3JlbG9hZCAoV2ViS2l0UGFnZSAqcGFnZSk7CiAKLVdF
QktJVF9HVEtfQVBJIHZvaWQKLXdlYmtpdF9ndGtfcGFnZV9sb2FkX3N0cmluZyAoV2ViS2l0R3Rr
UGFnZSogcGFnZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBjb250ZW50X21p
bWVfdHlwZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnRfZW5jb2RpbmcsIGNvbnN0IGdjaGFyKiBiYXNl
X3VybCk7CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9wYWdlX2xvYWRfc3RyaW5nIChXZWJLaXRQ
YWdlKiBwYWdlLCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2NoYXIqIGNvbnRlbnRfbWlt
ZV90eXBlLCBjb25zdCBnY2hhciogY29udGVudF9lbmNvZGluZywgY29uc3QgZ2NoYXIqIGJhc2Vf
dXJsKTsKIAotV0VCS0lUX0dUS19BUEkgdm9pZAotd2Via2l0X2d0a19wYWdlX2xvYWRfaHRtbF9z
dHJpbmcgKFdlYktpdEd0a1BhZ2UqIHBhZ2UsIGNvbnN0IGdjaGFyKiBjb250ZW50LCBjb25zdCBn
Y2hhciogYmFzZV91cmwpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfcGFnZV9sb2FkX2h0bWxf
c3RyaW5nIChXZWJLaXRQYWdlKiBwYWdlLCBjb25zdCBnY2hhciogY29udGVudCwgY29uc3QgZ2No
YXIqIGJhc2VfdXJsKTsKIAotV0VCS0lUX0dUS19BUEkgV2ViS2l0R3RrRnJhbWUqCi13ZWJraXRf
Z3RrX3BhZ2VfZ2V0X21haW5fZnJhbWUgKFdlYktpdEd0a1BhZ2UqIHBhZ2UpOworV0VCS0lUX0FQ
SSBXZWJLaXRGcmFtZSoKK3dlYmtpdF9wYWdlX2dldF9tYWluX2ZyYW1lIChXZWJLaXRQYWdlKiBw
YWdlKTsKIAogR19FTkRfREVDTFMKIApJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcHJp
dmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcHJpdmF0ZS5j
cHAJKHJldmlzaW9uIDI2MDE1KQorKysgV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3RrcHJpdmF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDQ2ICszNyw0NiBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdm9pZCBhcHBseShXZWJLaXRHdGtTZXR0aW5n
cyosIFdlYkNvcmU6OlNldHRpbmdzKikKK3ZvaWQgYXBwbHkoV2ViS2l0U2V0dGluZ3MqLCBXZWJD
b3JlOjpTZXR0aW5ncyopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotV2ViS2l0R3Rr
U2V0dGluZ3MqIGNyZWF0ZShXZWJDb3JlOjpTZXR0aW5ncyopCitXZWJLaXRTZXR0aW5ncyogY3Jl
YXRlKFdlYkNvcmU6OlNldHRpbmdzKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiAwOwogfQogCi1XZWJLaXRHdGtGcmFtZSogZ2V0RnJhbWVGcm9tUGFnZShXZWJLaXRHdGtQ
YWdlKiBwYWdlKQorV2ViS2l0RnJhbWUqIGdldEZyYW1lRnJvbVBhZ2UoV2ViS2l0UGFnZSogcGFn
ZSkKIHsKLSAgICByZXR1cm4gd2Via2l0X2d0a19wYWdlX2dldF9tYWluX2ZyYW1lKHBhZ2UpOwor
ICAgIHJldHVybiB3ZWJraXRfcGFnZV9nZXRfbWFpbl9mcmFtZShwYWdlKTsKIH0KIAotV2ViS2l0
R3RrUGFnZSogZ2V0UGFnZUZyb21GcmFtZShXZWJLaXRHdGtGcmFtZSogZnJhbWUpCitXZWJLaXRQ
YWdlKiBnZXRQYWdlRnJvbUZyYW1lKFdlYktpdEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4g
d2Via2l0X2d0a19mcmFtZV9nZXRfcGFnZShmcmFtZSk7CisgICAgcmV0dXJuIHdlYmtpdF9mcmFt
ZV9nZXRfcGFnZShmcmFtZSk7CiB9CiAKLVdlYkNvcmU6OkZyYW1lKiBjb3JlKFdlYktpdEd0a0Zy
YW1lKiBmcmFtZSkKK1dlYkNvcmU6OkZyYW1lKiBjb3JlKFdlYktpdEZyYW1lKiBmcmFtZSkKIHsK
LSAgICBXZWJLaXRHdGtGcmFtZVByaXZhdGUqIGZyYW1lX2RhdGEgPSBXRUJLSVRfR1RLX0ZSQU1F
X0dFVF9QUklWQVRFKGZyYW1lKTsKKyAgICBXZWJLaXRGcmFtZVByaXZhdGUqIGZyYW1lX2RhdGEg
PSBXRUJLSVRfRlJBTUVfR0VUX1BSSVZBVEUoZnJhbWUpOwogICAgIHJldHVybiBmcmFtZV9kYXRh
LT5mcmFtZTsKIH0KIAotV2ViS2l0R3RrRnJhbWUqIGtpdChXZWJDb3JlOjpGcmFtZSogY29yZUZy
YW1lKQorV2ViS2l0RnJhbWUqIGtpdChXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewogICAg
IFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQqPihjb3JlRnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CiAgICAg
cmV0dXJuIGNsaWVudC0+d2ViRnJhbWUoKTsKIH0KIAotV2ViQ29yZTo6UGFnZSogY29yZShXZWJL
aXRHdGtQYWdlKiBwYWdlKQorV2ViQ29yZTo6UGFnZSogY29yZShXZWJLaXRQYWdlKiBwYWdlKQog
ewotICAgIFdlYktpdEd0a1BhZ2VQcml2YXRlKiBwYWdlX2RhdGEgPSBXRUJLSVRfR1RLX1BBR0Vf
R0VUX1BSSVZBVEUocGFnZSk7CisgICAgV2ViS2l0UGFnZVByaXZhdGUqIHBhZ2VfZGF0YSA9IFdF
QktJVF9QQUdFX0dFVF9QUklWQVRFKHBhZ2UpOwogICAgIHJldHVybiBwYWdlX2RhdGEtPnBhZ2U7
CiB9CiAKLVdlYktpdEd0a1BhZ2UqIGtpdChXZWJDb3JlOjpQYWdlKiBwYWdlKQorV2ViS2l0UGFn
ZSoga2l0KFdlYkNvcmU6OlBhZ2UqIHBhZ2UpCiB7CiAgICAgV2ViS2l0OjpDaHJvbWVDbGllbnQq
IGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKICAgICByZXR1cm4gY2xpZW50LT53ZWJQYWdlKCk7CkluZGV4OiBXZWJL
aXQvZ3RrL0FwaS93ZWJraXRndGtwcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9B
cGkvd2Via2l0Z3RrcHJpdmF0ZS5oCShyZXZpc2lvbiAyNjAxNSkKKysrIFdlYktpdC9ndGsvQXBp
L3dlYmtpdGd0a3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV0VCS0lUX0dUS19QUklWQVRFX0gKLSNkZWZpbmUg
V0VCS0lUX0dUS19QUklWQVRFX0gKKyNpZm5kZWYgV0VCS0lUX1BSSVZBVEVfSAorI2RlZmluZSBX
RUJLSVRfUFJJVkFURV9ICiAKIC8qCi0gKiBJbnRlcm5hbCBjbGFzcy4gVGhpcyBjbGFzcyBrbm93
cyB0aGUgc2hhcmVkIHNlY3JldCBvZiBXZWJLaXRHdGtGcmFtZSwKLSAqIFdlYktpdEd0a05ldHdv
cmtSZXF1ZXN0IGFuZCBXZWJLaXRHdGtQYWdlLgorICogSW50ZXJuYWwgY2xhc3MuIFRoaXMgY2xh
c3Mga25vd3MgdGhlIHNoYXJlZCBzZWNyZXQgb2YgV2ViS2l0RnJhbWUsCisgKiBXZWJLaXROZXR3
b3JrUmVxdWVzdCBhbmQgV2ViS2l0UGFnZS4KICAqIFRoZXkgYXJlIHVzaW5nIFdlYkNvcmUgd2hp
Y2ggbXVzbid0IGJlIGV4cG9zZWQgdG8gdGhlIG91dGVyIHdvcmxkLgogICovCiAKQEAgLTQ3LDQ0
ICs0Nyw0NCBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotICAgIHZvaWQgYXBwbHkoV2ViS2l0R3RrU2V0dGluZ3MqLFdlYkNvcmU6OlNldHRp
bmdzKik7Ci0gICAgV2ViS2l0R3RrU2V0dGluZ3MqIGNyZWF0ZShXZWJDb3JlOjpTZXR0aW5ncyop
OwotICAgIFdlYktpdEd0a0ZyYW1lKiAgZ2V0RnJhbWVGcm9tUGFnZShXZWJLaXRHdGtQYWdlKik7
Ci0gICAgV2ViS2l0R3RrUGFnZSogZ2V0UGFnZUZyb21GcmFtZShXZWJLaXRHdGtGcmFtZSopOwot
Ci0gICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUoV2ViS2l0R3RrRnJhbWUqKTsKLSAgICBXZWJLaXRH
dGtGcmFtZSoga2l0KFdlYkNvcmU6OkZyYW1lKik7Ci0gICAgV2ViQ29yZTo6UGFnZSogY29yZShX
ZWJLaXRHdGtQYWdlKik7Ci0gICAgV2ViS2l0R3RrUGFnZSoga2l0KFdlYkNvcmU6OlBhZ2UqKTsK
KyAgICB2b2lkIGFwcGx5KFdlYktpdFNldHRpbmdzKixXZWJDb3JlOjpTZXR0aW5ncyopOworICAg
IFdlYktpdFNldHRpbmdzKiBjcmVhdGUoV2ViQ29yZTo6U2V0dGluZ3MqKTsKKyAgICBXZWJLaXRG
cmFtZSogIGdldEZyYW1lRnJvbVBhZ2UoV2ViS2l0UGFnZSopOworICAgIFdlYktpdFBhZ2UqIGdl
dFBhZ2VGcm9tRnJhbWUoV2ViS2l0RnJhbWUqKTsKKworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
KFdlYktpdEZyYW1lKik7CisgICAgV2ViS2l0RnJhbWUqIGtpdChXZWJDb3JlOjpGcmFtZSopOwor
ICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmUoV2ViS2l0UGFnZSopOworICAgIFdlYktpdFBhZ2UqIGtp
dChXZWJDb3JlOjpQYWdlKik7CiB9CiAKIGV4dGVybiAiQyIgewotICAgICNkZWZpbmUgV0VCS0lU
X0dUS19QQUdFX0dFVF9QUklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFU
RSgob2JqKSwgV0VCS0lUX0dUS19UWVBFX1BBR0UsIFdlYktpdEd0a1BhZ2VQcml2YXRlKSkKLSAg
ICB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3RrUGFnZVByaXZhdGUgV2ViS2l0R3RrUGFnZVByaXZh
dGU7Ci0gICAgc3RydWN0IF9XZWJLaXRHdGtQYWdlUHJpdmF0ZSB7CisgICAgI2RlZmluZSBXRUJL
SVRfUEFHRV9HRVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
KG9iaiksIFdFQktJVF9UWVBFX1BBR0UsIFdlYktpdFBhZ2VQcml2YXRlKSkKKyAgICB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0UGFnZVByaXZhdGUgV2ViS2l0UGFnZVByaXZhdGU7CisgICAgc3RydWN0
IF9XZWJLaXRQYWdlUHJpdmF0ZSB7CiAgICAgICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2U7CiAgICAg
ICAgIFdlYkNvcmU6OlNldHRpbmdzKiBzZXR0aW5nczsKIAotICAgICAgICBXZWJLaXRHdGtGcmFt
ZSogbWFpbkZyYW1lOworICAgICAgICBXZWJLaXRGcmFtZSogbWFpbkZyYW1lOwogICAgICAgICBX
ZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OwogICAgICAgICBXZWJD
b3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKIAogICAgICAgICBIYXNoU2V0PEd0a1dpZGdldCo+IGNo
aWxkcmVuOwogICAgIH07CiAgICAgCi0gICAgI2RlZmluZSBXRUJLSVRfR1RLX0ZSQU1FX0dFVF9Q
UklWQVRFKG9iaikgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lU
X0dUS19UWVBFX0ZSQU1FLCBXZWJLaXRHdGtGcmFtZVByaXZhdGUpKQotICAgIHR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRHdGtGcmFtZVByaXZhdGUgV2ViS2l0R3RrRnJhbWVQcml2YXRlOwotICAgIHN0
cnVjdCBfV2ViS2l0R3RrRnJhbWVQcml2YXRlIHsKKyAgICAjZGVmaW5lIFdFQktJVF9GUkFNRV9H
RVRfUFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdF
QktJVF9UWVBFX0ZSQU1FLCBXZWJLaXRGcmFtZVByaXZhdGUpKQorICAgIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRGcmFtZVByaXZhdGUgV2ViS2l0RnJhbWVQcml2YXRlOworICAgIHN0cnVjdCBfV2Vi
S2l0RnJhbWVQcml2YXRlIHsKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lOwogICAgICAg
ICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCogY2xpZW50OwotICAgICAgICBXZWJLaXRHdGtQ
YWdlKiBwYWdlOworICAgICAgICBXZWJLaXRQYWdlKiBwYWdlOwogCiAgICAgICAgIGdjaGFyKiB0
aXRsZTsKICAgICAgICAgZ2NoYXIqIGxvY2F0aW9uOwogICAgIH07CiAKIAotICAgIEdPYmplY3Qq
IHdlYmtpdF9ndGtfZnJhbWVfaW5pdF93aXRoX3BhZ2UoV2ViS2l0R3RrUGFnZSosIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCopOworICAgIEdPYmplY3QqIHdlYmtpdF9mcmFtZV9pbml0
X3dpdGhfcGFnZShXZWJLaXRQYWdlKiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7
CiB9CiAKICNlbmRpZgpJbmRleDogV2ViS2l0L2d0ay9BcGkvd2Via2l0Z3Rrc2V0dGluZ3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQXBpL3dlYmtpdGd0a3NldHRpbmdzLmNwcAkocmV2
aXNpb24gMjYwMTUpCisrKyBXZWJLaXQvZ3RrL0FwaS93ZWJraXRndGtzZXR0aW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDM5ICszMSwzOSBAQAogI2luY2x1ZGUgIndlYmtpdGd0a3NldHRp
bmdzLmgiCiAKIGV4dGVybiAiQyIgewotR1R5cGUgd2Via2l0X2d0a193ZWJfc2V0dGluZ3NfZ2V0
X3R5cGUodm9pZCkKK0dUeXBlIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUodm9pZCkKIHsK
IH0KIAotV2ViS2l0R3RrU2V0dGluZ3MqIHdlYmtpdF9ndGtfd2ViX3NldHRpbmdzX2NvcHkoV2Vi
S2l0R3RrU2V0dGluZ3MqIHNldHRpbmcpCitXZWJLaXRTZXR0aW5ncyogd2Via2l0X3dlYl9zZXR0
aW5nc19jb3B5KFdlYktpdFNldHRpbmdzKiBzZXR0aW5nKQogewogfQogCi12b2lkIHdlYmtpdF9n
dGtfd2ViX3NldHRpbmdzX2ZyZWUoV2ViS2l0R3RrU2V0dGluZ3MqIHNldHRpbmcpCit2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3NfZnJlZShXZWJLaXRTZXR0aW5ncyogc2V0dGluZykKIHsKIH0KIAot
V2ViS2l0R3RrU2V0dGluZ3MqIHdlYmtpdF9ndGtfd2ViX3NldHRpbmdzX2dldF9nbG9iYWwodm9p
ZCkKK1dlYktpdFNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9nbG9iYWwodm9pZCkK
IHsKIH0KIAotdm9pZCB3ZWJraXRfZ3RrX3dlYl9zZXR0aW5nc19zZXRfZ2xvYmFsIChXZWJLaXRH
dGtTZXR0aW5ncyogc2V0dGluZykKK3ZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfZ2xvYmFs
IChXZWJLaXRTZXR0aW5ncyogc2V0dGluZykKIHsKIH0KIAotdm9pZCB3ZWJraXRfZ3RrX3dlYl9z
ZXR0aW5nc19zZXRfZm9udF9mYW1pbHkoV2ViS2l0R3RrU2V0dGluZ3MqLCBXZWJLaXRHdGtGb250
RmFtaWx5IGZhbWlseSwgZ2NoYXIqIGZhbWlseV9uYW1lKQordm9pZCB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyosIFdlYktpdEZvbnRGYW1pbHkgZmFt
aWx5LCBnY2hhciogZmFtaWx5X25hbWUpCiB7CiB9CiAKLWdjaGFyKiB3ZWJraXRfZ3RrX3dlYl9z
ZXR0aW5nc19nZXRfZm9udF9mYW1pbHkoV2ViS2l0R3RrU2V0dGluZ3MqLCBXZWJLaXRHdGtGb250
RmFtaWx5IGZhbWlseSkKK2djaGFyKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9mb250X2ZhbWls
eShXZWJLaXRTZXR0aW5ncyosIFdlYktpdEZvbnRGYW1pbHkgZmFtaWx5KQogewogfQogCi12b2lk
IHdlYmtpdF9ndGtfd2ViX3NldHRpbmdzX3NldF91c2VyX3N0eWxlX3NoZWV0X2xvY2F0aW9uKFdl
YktpdEd0a1NldHRpbmdzKiwgZ2NoYXIqKQordm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF91
c2VyX3N0eWxlX3NoZWV0X2xvY2F0aW9uKFdlYktpdFNldHRpbmdzKiwgZ2NoYXIqKQogewogfQog
Ci12b2lkIHdlYmtpdF9ndGtfc2V0X2Z0cF9kaXJlY3RvcnlfdGVtcGxhdGVfcGF0aChXZWJLaXRH
dGtTZXR0aW5ncyosIGdjaGFyKikKK3ZvaWQgd2Via2l0X3NldF9mdHBfZGlyZWN0b3J5X3RlbXBs
YXRlX3BhdGgoV2ViS2l0U2V0dGluZ3MqLCBnY2hhciopCiB7CiB9CiB9CkluZGV4OiBXZWJLaXQv
Z3RrL0FwaS93ZWJraXRndGtzZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQXBp
L3dlYmtpdGd0a3NldHRpbmdzLmgJKHJldmlzaW9uIDI2MDE1KQorKysgV2ViS2l0L2d0ay9BcGkv
d2Via2l0Z3Rrc2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdFQktJVF9HVEtfU0VUVElOR1NfSAotI2RlZmluZSBX
RUJLSVRfR1RLX1NFVFRJTkdTX0gKKyNpZm5kZWYgV0VCS0lUX1NFVFRJTkdTX0gKKyNkZWZpbmUg
V0VCS0lUX1NFVFRJTkdTX0gKIAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgpAQCAtMzcsMjggKzM3LDI4IEBACiBHX0JFR0lOX0RFQ0xTCiAKIHR5cGVkZWYgZW51
bSB7Ci0gICAgV0VCS0lUX0dUS19GT05UX0ZBTUlMWV9TVEFOREFSRCwKLSAgICBXRUJLSVRfR1RL
X0ZPTlRfRkFNSUxZX0ZJWEVELAotICAgIFdFQktJVF9HVEtfRk9OVF9GQU1JTFlfU0VSSUYsCi0g
ICAgV0VCS0lUX0dUS19GT05UX0ZBTUlMWV9TQU5TX1NFUklGLAotICAgIFdFQktJVF9HVEtfRk9O
VF9GQU1JTFlfQ1VSU0lWRSwKLSAgICBXRUJLSVRfR1RLX0ZPTlRfRkFNSUxZX0ZBTlRBU1ksCi0g
ICAgV0VCS0lUX0dUS19GT05UX0ZBTUlMWV9MQVNUX0VOVFJZCi19IFdlYktpdEd0a0ZvbnRGYW1p
bHk7CisgICAgV0VCS0lUX0ZPTlRfRkFNSUxZX1NUQU5EQVJELAorICAgIFdFQktJVF9GT05UX0ZB
TUlMWV9GSVhFRCwKKyAgICBXRUJLSVRfRk9OVF9GQU1JTFlfU0VSSUYsCisgICAgV0VCS0lUX0ZP
TlRfRkFNSUxZX1NBTlNfU0VSSUYsCisgICAgV0VCS0lUX0ZPTlRfRkFNSUxZX0NVUlNJVkUsCisg
ICAgV0VCS0lUX0ZPTlRfRkFNSUxZX0ZBTlRBU1ksCisgICAgV0VCS0lUX0ZPTlRfRkFNSUxZX0xB
U1RfRU5UUlkKK30gV2ViS2l0Rm9udEZhbWlseTsKIAogdHlwZWRlZiBlbnVtIHsKLSAgICBXRUJL
SVRfR1RLX0VESVRBQkxFX0xJTktfREVGQVVMVF9CRUhBVklPVVIsCi0gICAgV0VCS0lUX0dUS19F
RElUQUJMRV9MSU5LX0FMV0FZU19MSVZFLAotICAgIFdFQktJVF9HVEtfRURJVEFCTEVfTElOS19P
TkxZX1dJVEhfU0hJRlRfS0VZLAotICAgIFdFQktJVF9HVEtfRURJVEFCTEVfTElOS19MSVZFX1dI
RU5fTk9UX0ZPQ1VTRUQsCi0gICAgV0VCS0lUX0dUS19FRElUQUJMRV9MSU5LX05FVkVSX0xJVkUK
LX0gV2ViS2l0R3RrRWRpdGFibGVMaW5rQmVoYXZpb3VyOworICAgIFdFQktJVF9FRElUQUJMRV9M
SU5LX0RFRkFVTFRfQkVIQVZJT1VSLAorICAgIFdFQktJVF9FRElUQUJMRV9MSU5LX0FMV0FZU19M
SVZFLAorICAgIFdFQktJVF9FRElUQUJMRV9MSU5LX09OTFlfV0lUSF9TSElGVF9LRVksCisgICAg
V0VCS0lUX0VESVRBQkxFX0xJTktfTElWRV9XSEVOX05PVF9GT0NVU0VELAorICAgIFdFQktJVF9F
RElUQUJMRV9MSU5LX05FVkVSX0xJVkUKK30gV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3VyOwog
Ci10eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3RrU2V0dGluZ3MgV2ViS2l0R3RrU2V0dGluZ3M7Ci10
eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3RrU2V0dGluZ3NQcml2YXRlIFdlYktpdEd0a1NldHRpbmdz
UHJpdmF0ZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZXR0aW5ncyBXZWJLaXRTZXR0aW5nczsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTZXR0aW5nc1ByaXZhdGUgV2ViS2l0U2V0dGluZ3NQcml2
YXRlOwogCi1zdHJ1Y3QgX1dlYktpdEd0a1NldHRpbmdzIHsKLSAgICBnY2hhciogZm9udF9uYW1l
W1dFQktJVF9HVEtfRk9OVF9GQU1JTFlfTEFTVF9FTlRSWV07CitzdHJ1Y3QgX1dlYktpdFNldHRp
bmdzIHsKKyAgICBnY2hhciogZm9udF9uYW1lW1dFQktJVF9GT05UX0ZBTUlMWV9MQVNUX0VOVFJZ
XTsKICAgICBnaW50ICAgbWluaW11bV9mb250X3NpemU7CiAgICAgZ2ludCAgIG1pbmltdW1fbG9n
aWNhbF9mb250X3NpemU7CiAgICAgZ2ludCAgIGRlZmF1bHRfZm9udF9zaXplOwpAQCAtNzEsNyAr
NzEsNyBAQCBzdHJ1Y3QgX1dlYktpdEd0a1NldHRpbmdzIHsKICAgICBnY2hhciogdXNlcl9zdHls
ZV9zaGVldF9sb2NhdGlvbjsKICAgICBnYm9vbGVhbiBzaG91bGRfcHJpbnRfYmFja2dyb3VuZHM7
CiAgICAgZ2Jvb2xlYW4gdGV4dF9hcmVhc19hcmVfcmVzaXphYmxlOwotICAgIFdlYktpdEd0a0Vk
aXRhYmxlTGlua0JlaGF2aW91ciBlZGl0YWJsZV9saW5rX2JlaGF2aW91cjsKKyAgICBXZWJLaXRF
ZGl0YWJsZUxpbmtCZWhhdmlvdXIgZWRpdGFibGVfbGlua19iZWhhdmlvdXI7CiAgICAgZ2Jvb2xl
YW4gdXNlc19wYWdlX2NhY2hlOwogICAgIGdib29sZWFuIHNocmlua19zdGFuZGFsb25lX2ltYWdl
c190b19maXQ7CiAgICAgZ2Jvb2xlYW4gc2hvd191cmxzX2luX3Rvb2xfdGlwczsKQEAgLTgwLDM1
ICs4MCwzNSBAQCBzdHJ1Y3QgX1dlYktpdEd0a1NldHRpbmdzIHsKICAgICBnYm9vbGVhbiBkZXZl
bG9wZXJfZXh0cmFzX2VuYWJsZWQ7CiAKIAotICAgIFdlYktpdEd0a1NldHRpbmdzUHJpdmF0ZSAq
cHJpdmF0ZV9kYXRhOworICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSAqcHJpdmF0ZV9kYXRhOwog
fTsKIAogR1R5cGUKLXdlYmtpdF9ndGtfd2ViX3NldHRpbmdzX2dldF90eXBlICh2b2lkKTsKK3dl
YmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgKHZvaWQpOwogCi1XZWJLaXRHdGtTZXR0aW5ncyoK
LXdlYmtpdF9ndGtfd2ViX3NldHRpbmdzX2NvcHkgKFdlYktpdEd0a1NldHRpbmdzKiBzZXR0aW5n
KTsKK1dlYktpdFNldHRpbmdzKgord2Via2l0X3dlYl9zZXR0aW5nc19jb3B5IChXZWJLaXRTZXR0
aW5ncyogc2V0dGluZyk7CiAKIHZvaWQKLXdlYmtpdF9ndGtfd2ViX3NldHRpbmdzX2ZyZWUgKFdl
YktpdEd0a1NldHRpbmdzKiBzZXR0aW5nKTsKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZnJlZSAoV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmcpOwogCi1XZWJLaXRHdGtTZXR0aW5ncyoKLXdlYmtpdF9ndGtf
d2ViX3NldHRpbmdzX2dldF9nbG9iYWwgKHZvaWQpOworV2ViS2l0U2V0dGluZ3MqCit3ZWJraXRf
d2ViX3NldHRpbmdzX2dldF9nbG9iYWwgKHZvaWQpOwogCiB2b2lkCi13ZWJraXRfZ3RrX3dlYl9z
ZXR0aW5nc19zZXRfZ2xvYmFsIChXZWJLaXRHdGtTZXR0aW5ncyogc2V0dGluZyk7Cit3ZWJraXRf
d2ViX3NldHRpbmdzX3NldF9nbG9iYWwgKFdlYktpdFNldHRpbmdzKiBzZXR0aW5nKTsKIAogdm9p
ZAotd2Via2l0X2d0a193ZWJfc2V0dGluZ3Nfc2V0X2ZvbnRfZmFtaWx5KFdlYktpdEd0a1NldHRp
bmdzKiwgV2ViS2l0R3RrRm9udEZhbWlseSBmYW1pbHksIGdjaGFyICpmYW1pbHlfbmFtZSk7Cit3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9mb250X2ZhbWlseShXZWJLaXRTZXR0aW5ncyosIFdlYktp
dEZvbnRGYW1pbHkgZmFtaWx5LCBnY2hhciAqZmFtaWx5X25hbWUpOwogCiBnY2hhcioKLXdlYmtp
dF9ndGtfd2ViX3NldHRpbmdzX2dldF9mb250X2ZhbWlseShXZWJLaXRHdGtTZXR0aW5ncyosIFdl
YktpdEd0a0ZvbnRGYW1pbHkgZmFtaWx5KTsKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X2ZvbnRf
ZmFtaWx5KFdlYktpdFNldHRpbmdzKiwgV2ViS2l0Rm9udEZhbWlseSBmYW1pbHkpOwogCiB2b2lk
Ci13ZWJraXRfZ3RrX3dlYl9zZXR0aW5nc19zZXRfdXNlcl9zdHlsZV9zaGVldF9sb2NhdGlvbihX
ZWJLaXRHdGtTZXR0aW5ncyosIGdjaGFyKik7Cit3ZWJraXRfd2ViX3NldHRpbmdzX3NldF91c2Vy
X3N0eWxlX3NoZWV0X2xvY2F0aW9uKFdlYktpdFNldHRpbmdzKiwgZ2NoYXIqKTsKIAogdm9pZAot
d2Via2l0X2d0a19zZXRfZnRwX2RpcmVjdG9yeV90ZW1wbGF0ZV9wYXRoKFdlYktpdEd0a1NldHRp
bmdzKiwgZ2NoYXIqKTsKK3dlYmtpdF9zZXRfZnRwX2RpcmVjdG9yeV90ZW1wbGF0ZV9wYXRoKFdl
YktpdFNldHRpbmdzKiwgZ2NoYXIqKTsKIAogCiBHX0VORF9ERUNMUwpJbmRleDogV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMjYwMTUp
CisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLUNocm9tZUNsaWVudDo6Q2hyb21lQ2xpZW50KFdlYktpdEd0a1Bh
Z2UqIHBhZ2UpCitDaHJvbWVDbGllbnQ6OkNocm9tZUNsaWVudChXZWJLaXRQYWdlKiBwYWdlKQog
ICAgIDogbV93ZWJQYWdlKHBhZ2UpCiB7CiB9CkBAIC04NywxMSArODcsMTEgQEAgdm9pZCBDaHJv
bWVDbGllbnQ6OnVuZm9jdXMoKQogUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJh
bWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JikKIHsKICAgICAvKiBUT0RPOiBGcmFtZUxvYWRS
ZXF1ZXN0IGlzIG5vdCB1c2VkICovCi0gICAgV2ViS2l0R3RrUGFnZSogcGFnZSA9IFdFQktJVF9H
VEtfUEFHRV9HRVRfQ0xBU1MobV93ZWJQYWdlKS0+Y3JlYXRlX3BhZ2UobV93ZWJQYWdlKTsKKyAg
ICBXZWJLaXRQYWdlKiBwYWdlID0gV0VCS0lUX1BBR0VfR0VUX0NMQVNTKG1fd2ViUGFnZSktPmNy
ZWF0ZV9wYWdlKG1fd2ViUGFnZSk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFdlYktpdEd0a1BhZ2VQcml2YXRlICpwcml2YXRlRGF0YSA9IFdFQktJVF9HVEtfUEFH
RV9HRVRfUFJJVkFURShXRUJLSVRfR1RLX1BBR0UocGFnZSkpOworICAgIFdlYktpdFBhZ2VQcml2
YXRlICpwcml2YXRlRGF0YSA9IFdFQktJVF9QQUdFX0dFVF9QUklWQVRFKFdFQktJVF9QQUdFKHBh
Z2UpKTsKICAgICByZXR1cm4gcHJpdmF0ZURhdGEtPnBhZ2U7CiB9CiAKQEAgLTE5OCwxOSArMTk4
LDE5IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKGMKICAgICBDU3Ry
aW5nIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnV0ZjgoKTsKICAgICBDU3RyaW5nIHNvdXJjZUlk
U3RyaW5nID0gc291cmNlSWQudXRmOCgpOwogCi0gICAgV0VCS0lUX0dUS19QQUdFX0dFVF9DTEFT
UyhtX3dlYlBhZ2UpLT5qYXZhX3NjcmlwdF9jb25zb2xlX21lc3NhZ2UobV93ZWJQYWdlLCBtZXNz
YWdlU3RyaW5nLmRhdGEoKSwgbGluZU51bWJlciwgc291cmNlSWRTdHJpbmcuZGF0YSgpKTsKKyAg
ICBXRUJLSVRfUEFHRV9HRVRfQ0xBU1MobV93ZWJQYWdlKS0+amF2YV9zY3JpcHRfY29uc29sZV9t
ZXNzYWdlKG1fd2ViUGFnZSwgbWVzc2FnZVN0cmluZy5kYXRhKCksIGxpbmVOdW1iZXIsIHNvdXJj
ZUlkU3RyaW5nLmRhdGEoKSk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0
QWxlcnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQ1N0cmlu
ZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS51dGY4KCk7Ci0gICAgV0VCS0lUX0dUS19QQUdFX0dF
VF9DTEFTUyhtX3dlYlBhZ2UpLT5qYXZhX3NjcmlwdF9hbGVydChtX3dlYlBhZ2UsIGtpdChmcmFt
ZSksIG1lc3NhZ2VTdHJpbmcuZGF0YSgpKTsKKyAgICBXRUJLSVRfUEFHRV9HRVRfQ0xBU1MobV93
ZWJQYWdlKS0+amF2YV9zY3JpcHRfYWxlcnQobV93ZWJQYWdlLCBraXQoZnJhbWUpLCBtZXNzYWdl
U3RyaW5nLmRhdGEoKSk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29u
ZmlybShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBDU3RyaW5n
IG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlLnV0ZjgoKTsKLSAgICByZXR1cm4gV0VCS0lUX0dUS19Q
QUdFX0dFVF9DTEFTUyhtX3dlYlBhZ2UpLT5qYXZhX3NjcmlwdF9jb25maXJtKG1fd2ViUGFnZSwg
a2l0KGZyYW1lKSwgbWVzc2FnZVN0cmluZy5kYXRhKCkpOworICAgIHJldHVybiBXRUJLSVRfUEFH
RV9HRVRfQ0xBU1MobV93ZWJQYWdlKS0+amF2YV9zY3JpcHRfY29uZmlybShtX3dlYlBhZ2UsIGtp
dChmcmFtZSksIG1lc3NhZ2VTdHJpbmcuZGF0YSgpKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnQ6
OnJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJlc3VsdCkKQEAgLTIxOCw3ICsy
MTgsNyBAQCBib29sIENocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChGCiAgICAgQ1N0
cmluZyBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZS51dGY4KCk7CiAgICAgQ1N0cmluZyBkZWZhdWx0
VmFsdWVTdHJpbmcgPSBkZWZhdWx0VmFsdWUudXRmOCgpOyAKIAotICAgIGdjaGFyKiBjcmVzdWx0
ID0gV0VCS0lUX0dUS19QQUdFX0dFVF9DTEFTUyhtX3dlYlBhZ2UpLT5qYXZhX3NjcmlwdF9wcm9t
cHQobV93ZWJQYWdlLAorICAgIGdjaGFyKiBjcmVzdWx0ID0gV0VCS0lUX1BBR0VfR0VUX0NMQVNT
KG1fd2ViUGFnZSktPmphdmFfc2NyaXB0X3Byb21wdChtX3dlYlBhZ2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBraXQoZnJhbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVN0cmluZy5k
YXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVTdHJpbmcuZGF0YSgpKTsK
SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkocmV2
aXNpb24gMjYwMTUpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNCArMzEsMTQgQEAKIAogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgogCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0R3RrUGFnZSBXZWJLaXRHdGtQYWdl
OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFBhZ2UgV2ViS2l0UGFnZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKICAgICBjbGFzcyBDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENocm9tZUNsaWVudChXZWJLaXRHdGtQYWdl
Kik7Ci0gICAgICAgIFdlYktpdEd0a1BhZ2UqIHdlYlBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3dl
YlBhZ2U7IH0KKyAgICAgICAgQ2hyb21lQ2xpZW50KFdlYktpdFBhZ2UqKTsKKyAgICAgICAgV2Vi
S2l0UGFnZSogd2ViUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZTsgfQogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmludChXZWJDb3JlOjpG
cmFtZSopOwogICAgIHByaXZhdGU6Ci0gICAgICAgIFdlYktpdEd0a1BhZ2UqIG1fd2ViUGFnZTsK
KyAgICAgICAgV2ViS2l0UGFnZSogbV93ZWJQYWdlOwogICAgIH07CiB9CiAKSW5kZXg6IFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDI2
MDE1KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRs
ZUlucHV0TWV0aG9kS2V5cAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUVkaXRvckNsaWVu
dDo6RWRpdG9yQ2xpZW50KFdlYktpdEd0a1BhZ2UqIHBhZ2UpCitFZGl0b3JDbGllbnQ6OkVkaXRv
ckNsaWVudChXZWJLaXRQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiB7CiB9CkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDI2MDE1KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KIAotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEd0a1BhZ2UgV2ViS2l0R3RrUGFnZTsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRQYWdlIFdlYktpdFBhZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBQYWdlOwpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
ICAgIGNsYXNzIEVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRWRpdG9yQ2xpZW50KFdlYktpdEd0a1BhZ2UqKTsKKyAgICAg
ICAgRWRpdG9yQ2xpZW50KFdlYktpdFBhZ2UqKTsKIAogICAgICAgICAvLyBmcm9tIEVkaXRvckNs
aWVudAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOwpAQCAtMTEwLDcgKzEx
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgV2ViS2l0
R3RrUGFnZSogbV9wYWdlOworICAgICAgICBXZWJLaXRQYWdlKiBtX3BhZ2U7CiAgICAgfTsKIH0K
IApJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAJKHJldmlzaW9uIDI2MDE1KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1GcmFt
ZUxvYWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0R3RrRnJhbWUqIGZyYW1lKQor
RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdEZyYW1lKiBmcmFtZSkK
ICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2ZpcnN0RGF0YShmYWxzZSkKIHsKQEAgLTEx
MiwxMyArMTEyLDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWZpZXIK
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlv
bigpCiB7Ci0gICAgV2ViS2l0R3RrUGFnZSogcGFnZSA9IGdldFBhZ2VGcm9tRnJhbWUobV9mcmFt
ZSk7CisgICAgV2ViS2l0UGFnZSogcGFnZSA9IGdldFBhZ2VGcm9tRnJhbWUobV9mcmFtZSk7CiAg
ICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJsb2FkX3N0YXJ0ZWQiLCBtX2ZyYW1lKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCkKIHsKLSAgICBXZWJLaXRHdGtQYWdlKiBraXRQYWdlID0gZ2V0UGFnZUZy
b21GcmFtZShtX2ZyYW1lKTsKKyAgICBXZWJLaXRQYWdlKiBraXRQYWdlID0gZ2V0UGFnZUZyb21G
cmFtZShtX2ZyYW1lKTsKICAgICBQYWdlKiBjb3JlUGFnZSA9IGNvcmUoa2l0UGFnZSk7CiAKICAg
ICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoa2l0UGFnZSwgImxvYWRfcHJvZ3Jlc3NfY2hhbmdlZCIs
IGxyb3VuZChjb3JlUGFnZS0+cHJvZ3Jlc3MoKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKSoxMDApKTsg
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNz
RXN0aQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlm
aWNhdGlvbigpCiB7Ci0gICAgV2ViS2l0R3RrUGFnZSogcGFnZSA9IGdldFBhZ2VGcm9tRnJhbWUo
bV9mcmFtZSk7CisgICAgV2ViS2l0UGFnZSogcGFnZSA9IGdldFBhZ2VGcm9tRnJhbWUobV9mcmFt
ZSk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUocGFnZSwgImxvYWRfZmluaXNoZWQiLCBt
X2ZyYW1lKTsKIH0KQEAgLTE4Miw3ICsxODIsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZUZyYW1lKGNvCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUoKSk7
CiAKICAgICBBU1NFUlQoY29yZShnZXRQYWdlRnJvbUZyYW1lKHdlYkZyYW1lKCkpKSA9PSBjb3Jl
RnJhbWUtPnBhZ2UoKSk7Ci0gICAgV2ViS2l0R3RrRnJhbWUqIGd0a0ZyYW1lID0gV0VCS0lUX0dU
S19GUkFNRSh3ZWJraXRfZ3RrX2ZyYW1lX2luaXRfd2l0aF9wYWdlKGdldFBhZ2VGcm9tRnJhbWUo
d2ViRnJhbWUoKSksIG93bmVyRWxlbWVudCkpOworICAgIFdlYktpdEZyYW1lKiBndGtGcmFtZSA9
IFdFQktJVF9GUkFNRSh3ZWJraXRfZnJhbWVfaW5pdF93aXRoX3BhZ2UoZ2V0UGFnZUZyb21GcmFt
ZSh3ZWJGcmFtZSgpKSwgb3duZXJFbGVtZW50KSk7CiAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBj
b3JlKGd0a0ZyYW1lKTsKIAogICAgIGNvcmVGcmFtZS0+dHJlZSgpLT5hcHBlbmRDaGlsZChjaGls
ZEZyYW1lKTsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxDbG9zCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKQogewotICAgIFdlYktpdEd0a1BhZ2UqIHBhZ2UgPSBnZXRQYWdlRnJvbUZyYW1lKG1f
ZnJhbWUpOworICAgIFdlYktpdFBhZ2UqIHBhZ2UgPSBnZXRQYWdlRnJvbUZyYW1lKG1fZnJhbWUp
OwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHBhZ2UsICJpY29uX2xvYWRlZCIsIG1fZnJh
bWUpOwogfQpAQCAtMzcyLDEzICszNzIsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cHJl
cGFyZUZvckRhdGFTbwogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgV2ViS2l0R3RrUGFnZSogcGFn
ZSA9IGdldFBhZ2VGcm9tRnJhbWUobV9mcmFtZSk7CisgICAgV2ViS2l0UGFnZSogcGFnZSA9IGdl
dFBhZ2VGcm9tRnJhbWUobV9mcmFtZSk7CiAKICAgICBDU3RyaW5nIHRpdGxlU3RyaW5nID0gdGl0
bGUudXRmOCgpOyAKICAgICBEZXByZWNhdGVkQ1N0cmluZyB1cmxTdHJpbmcgPSB1cmwucHJldHR5
VVJMKCkudXRmOCgpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAidGl0bGVf
Y2hhbmdlZCIsIHRpdGxlU3RyaW5nLmRhdGEoKSwgdXJsU3RyaW5nLmRhdGEoKSk7CiAKLSAgICBp
ZiAobV9mcmFtZSA9PSB3ZWJraXRfZ3RrX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSkpCisgICAg
aWYgKG1fZnJhbWUgPT0gd2Via2l0X3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSkpCiAgICAgICAg
IGdfc2lnbmFsX2VtaXRfYnlfbmFtZShwYWdlLCAidGl0bGVfY2hhbmdlZCIsIHRpdGxlU3RyaW5n
LmRhdGEoKSwgdXJsU3RyaW5nLmRhdGEoKSk7CiB9CiAKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDI2MDE1KQor
KysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxNyArMzIsMTcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKIAotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdEd0a0ZyYW1lIFdlYktpdEd0a0ZyYW1lOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEZyYW1l
IFdlYktpdEZyYW1lOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgIGNsYXNzIEZyYW1lTG9h
ZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdEd0a0ZyYW1lKik7CisgICAgICAg
IEZyYW1lTG9hZGVyQ2xpZW50KFdlYktpdEZyYW1lKik7CiAgICAgICAgIHZpcnR1YWwgfkZyYW1l
TG9hZGVyQ2xpZW50KCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ry
b3llZCgpOwogCi0gICAgICAgIFdlYktpdEd0a0ZyYW1lKiAgd2ViRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lOyB9CisgICAgICAgIFdlYktpdEZyYW1lKiAgd2ViRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lOyB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmlldygpIGNvbnN0OwpAQCAtMTc4
LDcgKzE3OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q2FjaGVQYWdlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKICAgICBwcml2YXRlOgotICAgICAgICBXZWJLaXRHdGtGcmFtZSogbV9mcmFtZTsKKyAg
ICAgICAgV2ViS2l0RnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgYm9vbCBtX2ZpcnN0RGF0YTsKICAgICB9OwpJbmRl
eDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYwMTYpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwNy0xMC0wMyAgQWxwIFRva2VyICA8YWxwQGF0b2tl
ci5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MjYKKyAgICAgICAgW2d0
a10gQVBJIGRlc2lnbi4gTWFwcGluZyB0aGUgV2ViVmlldyBkZWxlZ2F0ZXMgdG8gc2lnbmFscy4K
KworICAgICAgICBDaGFuZ2UgdGhlIEFQSSBuYW1lc3BhY2Ugb2YgdGhlIEd0aysgcG9ydCBmcm9t
ICdXZWJLaXRHdGsnIHRvICdXZWJLaXQnLgorCisgICAgICAgICogR3RrTGF1bmNoZXIvbWFpbi5j
cHA6CisgICAgICAgIChnb1RvVVJMQmFyVGV4dCk6CisgICAgICAgICh0aXRsZUNoYW5nZWQpOgor
ICAgICAgICAocHJvZ3Jlc3NDaGFuZ2VkKToKKyAgICAgICAgKG1lbnVNYWluQmFja0NhbGxiYWNr
KToKKyAgICAgICAgKG1lbnVNYWluRm9yd2FyZENhbGxiYWNrKToKKyAgICAgICAgKG1haW4pOgor
CiAyMDA3LTEwLTAzICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IGJkYXNoLgpJbmRleDogV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jcHAJKHJldmlz
aW9uIDI2MDE1KQorKysgV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcsNyArNyw3IEBACiAKIHN0YXRpYyBHdGtXaWRnZXQqIGdVUkxCYXJFbnRyeTsK
IHN0YXRpYyBHdGtXaWRnZXQqIGdUb3BMZXZlbFdpbmRvdzsKLXN0YXRpYyBXZWJLaXRHdGtQYWdl
KiBnUGFnZTsKK3N0YXRpYyBXZWJLaXRQYWdlKiBnUGFnZTsKIHN0YXRpYyBnY2hhciogZ1RpdGxl
Owogc3RhdGljIGdpbnQgZ1Byb2dyZXNzOwogCkBAIC0zNCw3ICszNCw3IEBAIHN0YXRpYyB2b2lk
IGdvVG9VUkxCYXJUZXh0KEd0a1dpZGdldCogdXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ2No
YXIqIHBhcnNlZFVSTCA9IGF1dG9jb3JyZWN0VVJMKHVybCk7Ci0gICAgd2Via2l0X2d0a19wYWdl
X29wZW4oZ1BhZ2UsIHBhcnNlZFVSTCk7CisgICAgd2Via2l0X3BhZ2Vfb3BlbihnUGFnZSwgcGFy
c2VkVVJMKTsKICAgICBnX2ZyZWUocGFyc2VkVVJMKTsKIH0KIApAQCAtNTcsNyArNTcsNyBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVXaW5kb3dUaXRsZSgpCiAgICAgZ19mcmVlKHRpdGxlKTsKIH0KIAot
c3RhdGljIHZvaWQgdGl0bGVDaGFuZ2VkKFdlYktpdEd0a1BhZ2UqLCBjb25zdCBnY2hhciogdGl0
bGUsIGNvbnN0IGdjaGFyKiB1cmwsIFdlYktpdEd0a1BhZ2UqKQorc3RhdGljIHZvaWQgdGl0bGVD
aGFuZ2VkKFdlYktpdFBhZ2UqLCBjb25zdCBnY2hhciogdGl0bGUsIGNvbnN0IGdjaGFyKiB1cmws
IFdlYktpdFBhZ2UqKQogewogICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkoZ1VSTEJh
ckVudHJ5KSwgdXJsKTsKIApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgdm9pZCB0aXRsZUNoYW5n
ZWQoV2ViS2l0R3RrUGFnZSosCiAgICAgdXBkYXRlV2luZG93VGl0bGUoKTsKIH0KIAotc3RhdGlj
IHZvaWQgcHJvZ3Jlc3NDaGFuZ2VkKFdlYktpdEd0a1BhZ2UqLCBnaW50IHByb2dyZXNzLCBXZWJL
aXRHdGtQYWdlKikKK3N0YXRpYyB2b2lkIHByb2dyZXNzQ2hhbmdlZChXZWJLaXRQYWdlKiwgZ2lu
dCBwcm9ncmVzcywgV2ViS2l0UGFnZSopCiB7CiAgICAgZ1Byb2dyZXNzID0gcHJvZ3Jlc3M7CiAg
ICAgdXBkYXRlV2luZG93VGl0bGUoKTsKQEAgLTgxLDEzICs4MSwxMyBAQCBzdGF0aWMgdm9pZCBm
cmFtZURlc3Ryb3lDYWxsYmFjayhHdGtXaWRnCiBzdGF0aWMgdm9pZCBtZW51TWFpbkJhY2tDYWxs
YmFjayhncG9pbnRlciBkYXRhKQogewogICAgIGdfYXNzZXJ0KCFkYXRhKTsKLSAgICB3ZWJraXRf
Z3RrX3BhZ2VfZ29fYmFja3dhcmQoZ1BhZ2UpOworICAgIHdlYmtpdF9wYWdlX2dvX2JhY2t3YXJk
KGdQYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgbWVudU1haW5Gb3J3YXJkQ2FsbGJhY2soZ3BvaW50
ZXIgZGF0YSkKIHsKICAgICBnX2Fzc2VydCghZGF0YSk7Ci0gICAgd2Via2l0X2d0a19wYWdlX2dv
X2ZvcndhcmQoZ1BhZ2UpOworICAgIHdlYmtpdF9wYWdlX2dvX2ZvcndhcmQoZ1BhZ2UpOwogfQog
CiBzdGF0aWMgdm9pZCBtZW51TWFpblF1aXRDYWxsYmFjayhncG9pbnRlcikKQEAgLTk4LDcgKzk4
LDcgQEAgc3RhdGljIHZvaWQgbWVudU1haW5RdWl0Q2FsbGJhY2soZ3BvaW50ZQogaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgCiB7CiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsK
LSAgICB3ZWJraXRfZ3RrX2luaXQoKTsKKyAgICB3ZWJraXRfaW5pdCgpOwogCiAgICAgZ2NoYXIq
IHVybCA9ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20iOwogICAgIGJvb2wgZXhpdEFmdGVyTG9hZGlu
ZyA9IGZhbHNlOwpAQCAtMTY5LDEzICsxNjksMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkgCiAgICAgR3RrV2lkZ2V0KiBzY3JvbGxlZFdpbmRvdyA9IGd0a19zY3JvbGxlZF93
aW5kb3dfbmV3KE5VTEwsTlVMTCk7CiAgICAgZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5
KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRXaW5kb3cpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfUE9MSUNZX0FVVE9NQVRJQywgR1RLX1BPTElDWV9BVVRPTUFU
SUMpOwotICAgIGdQYWdlID0gV0VCS0lUX0dUS19QQUdFKHdlYmtpdF9ndGtfcGFnZV9uZXcoKSk7
CisgICAgZ1BhZ2UgPSBXRUJLSVRfUEFHRSh3ZWJraXRfcGFnZV9uZXcoKSk7CiAgICAgZ3RrX2Nv
bnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihzY3JvbGxlZFdpbmRvdyksIEdUS19XSURHRVQoZ1Bh
Z2UpKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc2Nyb2xsZWRXaW5k
b3csIFRSVUUsIFRSVUUsIDApOwogICAgIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZ1BhZ2UsICJ0
aXRsZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0aXRsZUNoYW5nZWQpLCBnUGFnZSk7CiAgICAgZ19z
aWduYWxfY29ubmVjdChnUGFnZSwgImxvYWQtcHJvZ3Jlc3MtY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
cHJvZ3Jlc3NDaGFuZ2VkKSwgZ1BhZ2UpOwotICAgIHdlYmtpdF9ndGtfcGFnZV9vcGVuKGdQYWdl
LCB1cmwpOworICAgIHdlYmtpdF9wYWdlX29wZW4oZ1BhZ2UsIHVybCk7CiAKICAgICBndGtfd2lk
Z2V0X3Nob3dfYWxsKGdUb3BMZXZlbFdpbmRvdyk7CiAgICAgZ3RrX21haW4oKTsK
</data>
<flag name="review"
          id="6967"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>