<?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>192520</bug_id>
          
          <creation_ts>2018-12-07 15:35:41 -0800</creation_ts>
          <short_desc>[LFC] Rename LayoutFormattingState files to LayoutState</short_desc>
          <delta_ts>2018-12-07 16:27:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486188</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-07 15:35:41 -0800</bug_when>
    <thetext>The type is called LayoutState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486191</commentid>
    <comment_count>1</comment_count>
      <attachid>356845</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-07 15:41:28 -0800</bug_when>
    <thetext>Created attachment 356845
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486196</commentid>
    <comment_count>2</comment_count>
      <attachid>356845</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-12-07 15:51:52 -0800</bug_when>
    <thetext>Comment on attachment 356845
patch

Great patches! Keep &apos;em coming!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486215</commentid>
    <comment_count>3</comment_count>
      <attachid>356845</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 16:26:43 -0800</bug_when>
    <thetext>Comment on attachment 356845
patch

Clearing flags on attachment: 356845

Committed r238995: &lt;https://trac.webkit.org/changeset/238995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486216</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-07 16:26:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486217</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-07 16:27:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46568809&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356845</attachid>
            <date>2018-12-07 15:41:28 -0800</date>
            <delta_ts>2018-12-07 16:26:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>layoutstate-rename.patch</filename>
            <type>text/plain</type>
            <size>37989</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODk3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEyLTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBSZW5hbWUgTGF5b3V0
Rm9ybWF0dGluZ1N0YXRlIGZpbGVzIHRvIExheW91dFN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI1MjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCB0aGUgY2xhc3MgbmFtZS4KKworICAg
ICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ1N0
YXRlLmg6CisgICAgICAgICogbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRGb3JtYXR0aW5nU3RhdGUuY3BwLgorICAgICAgICAqIGxheW91dC9M
YXlvdXRTdGF0ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Rm9y
bWF0dGluZ1N0YXRlLmguCisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAg
ICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRR
dWlya3MuY3BwOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tJbnZhbGlk
YXRpb24uY3BwOgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmNwcDoKKyAg
ICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSW52YWxpZGF0aW9uLmNwcDoKKyAg
ICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKwogMjAxOC0xMi0wNyAgSnVzdGlu
IE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIFBhaW50
aW5nIEFQSSBjb2RlIGNsZWFudXAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI2NCw3
ICsxMjY0LDcgQEAgbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAogbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3Bw
CiBsYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcAotbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0
ZS5jcHAKK2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKIGxheW91dC9WZXJpZmljYXRpb24uY3BwCiBs
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIzODk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw3ICsyMDI4LDcgQEAKIAkJNkYy
MjJCNzYxQUI1MkQ4QTAwOTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMjIyQjc1MUFC
NTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHAgKi87IH07CiAJ
CTZGM0UxRjYyMjEzNjE0MjAwMEE2NUEwOCAvKiBGbG9hdEJveC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkYzRTFGNjEyMTM2MTQxNzAwQTY1QTA4IC8q
IEZsb2F0Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkY1MjE3QzcyMTc3RjVBNzAwNjU4M0JCIC8qIElubGluZVJ1blByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjUyMTdDNDIxNzdG
NUE2MDA2NTgzQkIgLyogSW5saW5lUnVuUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RjdDQTNDNjIwOEMyOTU3MDAyRjI5QUIgLyog
TGF5b3V0Rm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0Rm9ybWF0dGlu
Z1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNkY3Q0EzQzYyMDhDMjk1NzAwMkYyOUFCIC8qIExheW91dFN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjdDQTNDNDIwOEMyOTU2MDAyRjI5
QUIgLyogTGF5b3V0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RjdDQTNDQTIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZGN0NBM0M4MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGOTk1QTE1
MUE3MDc1NjIwMEE3MzVGNCAvKiBXZWJHTFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMTMxQTcwNzU2MjAwQTczNUY0IC8qIFdlYkdM
U3luYy5jcHAgKi87IH07CiAJCTZGOTk1QTE2MUE3MDc1NjIwMEE3MzVGNCAvKiBXZWJHTFN5bmMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTE0
MUE3MDc1NjIwMEE3MzVGNCAvKiBXZWJHTFN5bmMuaCAqLzsgfTsKQEAgLTkxMDgsOCArOTEwOCw4
IEBACiAJCTZGNTIxN0M0MjE3N0Y1QTYwMDY1ODNCQiAvKiBJbmxpbmVSdW5Qcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVSdW5Qcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjUyMTdDNjIxNzdGNUE2MDA2NTgzQkIgLyogSW5s
aW5lUnVuUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5saW5lUnVuUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjcz
OTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5b3V0VW5pdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5
b3V0VW5pdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkY3Q0EzQzQyMDhDMjk1
NjAwMkYyOUFCIC8qIExheW91dEZvcm1hdHRpbmdTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlv
dXRGb3JtYXR0aW5nU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkY3Q0Ez
QzUyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRGb3JtYXR0aW5nU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGF5b3V0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NkY3Q0EzQzUyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91dFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExheW91dFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY3
Q0EzQzgyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGOEY0NjAxMjFCMDNCQjQwMDQxQUMzQSAv
KiBGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0
aW5nQ29udGV4dFF1aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjEw
Miw4ICsxNjEwMiw4IEBACiAJCQkJMTE1Q0ZBNzUyMDhBRkUzMDAwMUU2OTkxIC8qIEZvcm1hdHRp
bmdTdGF0ZS5jcHAgKi8sCiAJCQkJMTE1Q0ZBNzQyMDhBRkUzMDAwMUU2OTkxIC8qIEZvcm1hdHRp
bmdTdGF0ZS5oICovLAogCQkJCTExNUY3ODA1MjA5Q0JDQkQwMDczOUMxMyAvKiBJbnZhbGlkYXRp
b24uaCAqLywKLQkJCQk2RjdDQTNDNTIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0Rm9ybWF0dGlu
Z1N0YXRlLmNwcCAqLywKLQkJCQk2RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0Rm9y
bWF0dGluZ1N0YXRlLmggKi8sCisJCQkJNkY3Q0EzQzUyMDhDMjk1NjAwMkYyOUFCIC8qIExheW91
dFN0YXRlLmNwcCAqLywKKwkJCQk2RjdDQTNDNDIwOEMyOTU2MDAyRjI5QUIgLyogTGF5b3V0U3Rh
dGUuaCAqLywKIAkJCQk2RjczOTE4QzIxMDZDRUREMDA2QUYyNjIgLyogTGF5b3V0VW5pdHMuaCAq
LywKIAkJCQkxMUZGMDJENTIwQkEzQzgxMDA4M0YyNUIgLyogVmVyaWZpY2F0aW9uLmNwcCAqLywK
IAkJCSk7CkBAIC0yOTk4OSw3ICsyOTk4OSw3IEBACiAJCQkJMTEzMTBDRjYyMEJBNEE1NjAwNjVB
OEQwIC8qIExheW91dENoaWxkSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTExOTlGQTQ2
MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTExMzEwQ0Y1MjBCQTRBNEMwMDY1QThEMCAvKiBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTZGN0NBM0M2MjA4QzI5NTcwMDJGMjlBQiAvKiBMYXlvdXRGb3Jt
YXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGN0NBM0M2MjA4QzI5NTcwMDJGMjlB
QiAvKiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE5OUZBNTMyMDhFMzhEMzAw
MjM1OENDIC8qIExheW91dElubGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE5OUZBNEYy
MDhFMzg5OTAwMjM1OENDIC8qIExheW91dElubGluZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExheW91dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAkocmV2aXNpb24gMjM4OTY4KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
IkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgogI2luY2x1ZGUgIkxh
eW91dERlc2NlbmRhbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0
ZS5oIgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVp
cmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwCShyZXZpc2lvbiAyMzg5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWlu
ZXIuaCIKLSNpbmNsdWRlICJMYXlvdXRGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJMYXlv
dXRTdGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgJKHJldmlzaW9uIDIzODk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKICNpbmNs
dWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1
ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAj
aW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dEZvcm1hdHRpbmdTdGF0ZS5jcHAJ
KHJldmlzaW9uIDIzODk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRGb3JtYXR0
aW5nU3RhdGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTU4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5b3V0Rm9ybWF0dGluZ1N0YXRlLmgi
Ci0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5o
IgotI2luY2x1ZGUgIkJsb2NrSW52YWxpZGF0aW9uLmgiCi0jaW5jbHVkZSAiRGlzcGxheUJveC5o
IgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiSW5saW5lSW52YWxpZGF0aW9uLmgiCi0jaW5j
bHVkZSAiSW52YWxpZGF0aW9uLmgiCi0jaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAi
TGF5b3V0Q29udGFpbmVyLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLVdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChMYXlvdXRTdGF0ZSk7Ci0KLUxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShj
b25zdCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxvY2ssIGNvbnN0IExheW91dFNpemUm
IGNvbnRhaW5lclNpemUpCi0gICAgOiBtX2luaXRpYWxDb250YWluaW5nQmxvY2sobWFrZVdlYWtQ
dHIoaW5pdGlhbENvbnRhaW5pbmdCbG9jaykpCi17Ci0gICAgLy8gTGF5b3V0U3RhdGUgaXMgYWx3
YXlzIGluaXRpYXRlZCB3aXRoIHRoZSBJQ0IuCi0gICAgQVNTRVJUKCFpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrLnBhcmVudCgpKTsKLSAgICBBU1NFUlQoaW5pdGlhbENvbnRhaW5pbmdCbG9jay5lc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICBhdXRvJiBkaXNwbGF5Qm94
ID0gZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKLSAgICBk
aXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4oeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNldEhv
cml6b250YWxOb25Db21wdXRlZE1hcmdpbih7IH0pOwotICAgIGRpc3BsYXlCb3guc2V0VmVydGlj
YWxNYXJnaW4oeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTm9uQ29sbGFwc2VkTWFy
Z2luKHsgfSk7Ci0gICAgZGlzcGxheUJveC5zZXRCb3JkZXIoeyB9KTsKLSAgICBkaXNwbGF5Qm94
LnNldFBhZGRpbmcoeyB9KTsKLSAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQoeyB9KTsKLSAgICBk
aXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGFpbmVyU2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgoY29udGFpbmVyU2l6ZS53aWR0aCgpKTsK
LQotICAgIG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5hZGQoJmluaXRpYWxD
b250YWluaW5nQmxvY2spOwotfQotCi12b2lkIExheW91dFN0YXRlOjp1cGRhdGVMYXlvdXQoKQot
ewotICAgIEFTU0VSVCghbV9mb3JtYXR0aW5nQ29udGV4dFJvb3RMaXN0Rm9yTGF5b3V0LmlzRW1w
dHkoKSk7Ci0gICAgZm9yIChhdXRvKiBsYXlvdXRSb290IDogbV9mb3JtYXR0aW5nQ29udGV4dFJv
b3RMaXN0Rm9yTGF5b3V0KQotICAgICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUo
KmxheW91dFJvb3QpOwotICAgIG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5j
bGVhcigpOwotfQotCi12b2lkIExheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1
YnRyZWUoY29uc3QgQm94JiBsYXlvdXRSb290KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGxheW91
dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKLSAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
KGxheW91dFJvb3QpOwotICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBmb3JtYXR0aW5nU3Rh
dGUuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0Um9vdCk7Ci0gICAgZm9ybWF0dGluZ0Nv
bnRleHQtPmxheW91dCgpOwotICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dE
ZXNjZW5kYW50cyhsYXlvdXRSb290KTsKLX0KLQotRGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6
ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5Qm94LmVuc3VyZSgmbGF5b3V0Qm94LCBbJmxheW91
dEJveF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpCb3g+KGxh
eW91dEJveC5zdHlsZSgpKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXZvaWQgTGF5
b3V0U3RhdGU6OnN0eWxlQ2hhbmdlZChjb25zdCBCb3gmIGxheW91dEJveCwgU3R5bGVEaWZmIHN0
eWxlRGlmZikKLXsKLSAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGVG
b3JCb3gobGF5b3V0Qm94KTsKLSAgICBjb25zdCBDb250YWluZXIqIGludmFsaWRhdGlvblJvb3Qg
PSBudWxscHRyOwotICAgIGlmIChpczxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0
YXRlKSkKLSAgICAgICAgaW52YWxpZGF0aW9uUm9vdCA9IEJsb2NrSW52YWxpZGF0aW9uOjppbnZh
bGlkYXRlKGxheW91dEJveCwgc3R5bGVEaWZmLCAqdGhpcywgZG93bmNhc3Q8QmxvY2tGb3JtYXR0
aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSkpLnJvb3Q7Ci0gICAgZWxzZSBpZiAoaXM8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUpKQotICAgICAgICBpbnZhbGlkYXRpb25S
b290ID0gSW5saW5lSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlKGxheW91dEJveCwgc3R5bGVEaWZm
LCAqdGhpcywgZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihmb3JtYXR0aW5nU3RhdGUp
KS5yb290OwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsK
LSAgICBBU1NFUlQoaW52YWxpZGF0aW9uUm9vdCk7Ci0gICAgbV9mb3JtYXR0aW5nQ29udGV4dFJv
b3RMaXN0Rm9yTGF5b3V0LmFkZFZvaWQoaW52YWxpZGF0aW9uUm9vdCk7Ci19Ci0KLXZvaWQgTGF5
b3V0U3RhdGU6Om1hcmtOZWVkc1VwZGF0ZShjb25zdCBCb3gmLCBPcHRpb25TZXQ8VXBkYXRlVHlw
ZT4pCi17Ci19Ci0KLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmZvcm1hdHRpbmdTdGF0
ZUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAgICBhdXRvJiByb290ID0g
bGF5b3V0Qm94LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygmcm9vdCkpOwotICAgIHJldHVybiAqbV9mb3JtYXR0
aW5nU3RhdGVzLmdldCgmcm9vdCk7Ci19Ci0KLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0Nv
bnRleHQoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtYXR0aW5nU3RhdGVzLmNvbnRhaW5z
KCZmb3JtYXR0aW5nUm9vdCkpOwotICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmdldCgm
Zm9ybWF0dGluZ1Jvb3QpOwotfQotCi1Gb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVh
dGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbnN0IEJveCYgZm9y
bWF0dGluZ1Jvb3QpCi17Ci0gICAgQVNTRVJUKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzRm9y
bWF0dGluZ0NvbnRleHQoKSk7Ci0KLSAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5n
U3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7Ci0KLSAgICAgICAgICAgIC8vIElm
IHRoZSBibG9jayBjb250YWluZXIgYm94IHRoYXQgaW5pdGlhdGVzIHRoaXMgaW5saW5lIGZvcm1h
dHRpbmcgY29udGV4dCBhbHNvIGVzdGFibGlzaGVzIGEgYmxvY2sgY29udGV4dCwgdGhlIGZsb2F0
cyBvdXRzaWRlIG9mIHRoZSBmb3JtYXR0aW5nIHJvb3QKLSAgICAgICAgICAgIC8vIHNob3VsZCBu
b3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgotICAgICAgICAgICAgLy8gPGRp
diBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW4i
PiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiB0
cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2PgotICAgICAgICAgICAg
aWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdT
dGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlz
KTsKLQotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGlu
aGVyaXRzIHRoZSBmbG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4dC4KLSAg
ICAgICAgICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBmb3Jt
YXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMgZmxv
YXRpbmcgc3RhdGUuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVG
b3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZUZvckJveChmb3JtYXR0aW5nUm9vdCkuZmxv
YXRpbmdTdGF0ZSgpLCAqdGhpcyk7Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKLSAgICB9
Ci0KLSAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCkpIHsKLSAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3Jt
YXR0aW5nUm9vdCwgWyZdIHsKLQotICAgICAgICAgICAgLy8gQmxvY2sgZm9ybWF0dGluZyBjb250
ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZS4KLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0
YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwotICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7Ci0gICAgfQotCi0gICAgQ1JBU0goKTsKLX0KLQotfQotfQotCi0jZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRGb3JtYXR0aW5nU3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Rm9ybWF0dGluZ1N0YXRl
LmgJKHJldmlzaW9uIDIzODk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRGb3Jt
YXR0aW5nU3RhdGUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
LQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKLWNsYXNzIFJlbmRlclZpZXc7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIERpc3BsYXkgewotY2xh
c3MgQm94OwotfQotCi1uYW1lc3BhY2UgTGF5b3V0IHsKLQotZW51bSBjbGFzcyBTdHlsZURpZmY7
Ci1jbGFzcyBCb3g7Ci1jbGFzcyBDb250YWluZXI7Ci1jbGFzcyBGb3JtYXR0aW5nU3RhdGU7Ci0K
LS8vIExheW91dFN0YXRlIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgbGF5b3V0LiBJdCB0YWtlcyB0
aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrIHdoaWNoIGFjdHMgYXMgdGhlIHJvb3Qgb2YgdGhl
IGxheW91dCBjb250ZXh0LgotLy8gTGF5b3V0U3RhdGU6OmxheW91dCgpIGdlbmVyYXRlcyB0aGUg
ZGlzcGxheSB0cmVlIGZvciB0aGUgcm9vdCBjb250YWluZXIncyBzdWJ0cmVlIChpdCBkb2VzIG5v
dCBydW4gbGF5b3V0IG9uIHRoZSByb290IHRob3VnaCkuCi0vLyBOb3RlLCB3aGlsZSB0aGUgaW5p
dGlhbCBjb250YWluaW5nIGJsb2NrIGlzIGVudHJ5IHBvaW50IGZvciB0aGUgaW5pdGlhbCBsYXlv
dXQsIGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG5lZWQgdG8gYmUgdGhlIGVudHJ5IHBvaW50IG9m
IGFueQotLy8gc3Vic2VxdWVudCBsYXlvdXRzIChzdWJ0cmVlIGxheW91dCkuIEEgbm9uLWluaXRp
YWwsIHN1YnRyZWUgbGF5b3V0IGNvdWxkIGJlIGluaXRpYXRlZCBvbiBtdWx0aXBsZSBmb3JtYXR0
aW5nIGNvbnRleHRzLgotLy8gRWFjaCBmb3JtYXR0aW5nIGNvbnRleHQgaGFzIGFuIGVudHJ5IHBv
aW50IGZvciBsYXlvdXQsIHdoaWNoIHBvdGVuaXRhbGx5IG1lYW5zIG11bHRpcGxlIGVudHJ5IHBv
aW50cyBwZXIgbGF5b3V0IGZyYW1lLgotLy8gTGF5b3V0U3RhdGUgYWxzbyBob2xkcyB0aGUgZm9y
bWF0dGluZyBzdGF0ZXMuIFRoZXkgY2FjaGUgZm9ybWF0dGluZyBjb250ZXh0IHNwZWNpZmljIGRh
dGEgdG8gZW5hYmxlIHBlcmZvcm1hbnQgaW5jcmVtZW50YWwgbGF5b3V0cy4KLWNsYXNzIExheW91
dFN0YXRlIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKExheW91dFN0YXRlKTsKLXB1Ymxp
YzoKLSAgICBMYXlvdXRTdGF0ZShjb25zdCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxv
Y2ssIGNvbnN0IExheW91dFNpemUmKTsKLQotICAgIHZvaWQgdXBkYXRlTGF5b3V0KCk7Ci0gICAg
dm9pZCBzdHlsZUNoYW5nZWQoY29uc3QgQm94JiwgU3R5bGVEaWZmKTsKLSAgICB2b2lkIHNldElu
UXVpcmtzTW9kZShib29sIGluUXVpcmtzTW9kZSkgeyBtX2luUXVpcmtzTW9kZSA9IGluUXVpcmtz
TW9kZTsgfQotCi0gICAgZW51bSBjbGFzcyBVcGRhdGVUeXBlIHsKLSAgICAgICAgT3ZlcmZsb3cg
PSAxIDw8IDAsCi0gICAgICAgIFBvc2l0aW9uID0gMSA8PCAxLAotICAgICAgICBTaXplICAgICA9
IDEgPDwgMiwKLSAgICAgICAgQWxsICAgICAgPSBPdmVyZmxvdyB8IFBvc2l0aW9uIHwgU2l6ZQot
ICAgIH07Ci0gICAgdm9pZCBtYXJrTmVlZHNVcGRhdGUoY29uc3QgQm94JiwgT3B0aW9uU2V0PFVw
ZGF0ZVR5cGU+KTsKLSAgICBib29sIG5lZWRzVXBkYXRlKGNvbnN0IEJveCYpIGNvbnN0OwotCi0g
ICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29uc3QgQm94JikgY29u
c3Q7Ci0gICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25z
dCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdDsKLSAgICBGb3JtYXR0aW5nU3RhdGUmIGNyZWF0
ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uc3QgQm94JiBmb3Jt
YXR0aW5nUm9vdCk7Ci0KLSAgICBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0OwotICAgIGJvb2wgaGFzRGlzcGxheUJveChjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRUb0Rpc3BsYXlCb3guY29u
dGFpbnMoJmxheW91dEJveCk7IH0KLQotICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pblF1aXJrc01vZGU7IH0KLSAgICAvLyBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5
Ci0gICAgdm9pZCB2ZXJpZnlBbmRPdXRwdXRNaXNtYXRjaGluZ0xheW91dFRyZWUoY29uc3QgUmVu
ZGVyVmlldyYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGNvbnN0IENvbnRhaW5lciYgaW5pdGlh
bENvbnRhaW5pbmdCbG9jaygpIGNvbnN0IHsgcmV0dXJuICptX2luaXRpYWxDb250YWluaW5nQmxv
Y2s7IH0KLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBCb3gm
KTsKLQotICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVyPiBtX2luaXRpYWxDb250YWluaW5nQmxv
Y2s7Ci0gICAgSGFzaFNldDxjb25zdCBDb250YWluZXIqPiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9v
dExpc3RGb3JMYXlvdXQ7Ci0gICAgSGFzaE1hcDxjb25zdCBCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9ybWF0dGluZ1N0YXRlPj4gbV9mb3JtYXR0aW5nU3RhdGVzOwotICAgIG11dGFibGUgSGFzaE1h
cDxjb25zdCBCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheTo6Qm94Pj4gbV9sYXlvdXRUb0Rp
c3BsYXlCb3g7Ci0gICAgYm9vbCBtX2luUXVpcmtzTW9kZSB7IGZhbHNlIH07Ci19OwotCi19Ci19
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAkocmV2aXNp
b24gMjM4OTY4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Rm9ybWF0dGluZ1N0
YXRlLmNwcDoyMzg5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5oIgorCisjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRl
ICJCbG9ja0ludmFsaWRhdGlvbi5oIgorI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKKyNpbmNsdWRl
ICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdT
dGF0ZS5oIgorI2luY2x1ZGUgIklubGluZUludmFsaWRhdGlvbi5oIgorI2luY2x1ZGUgIkludmFs
aWRhdGlvbi5oIgorI2luY2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgIkxheW91dENvbnRh
aW5lci5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoTGF5b3V0U3RhdGUpOworCitMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgQ29udGFp
bmVyJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBjb25zdCBMYXlvdXRTaXplJiBjb250YWluZXJT
aXplKQorICAgIDogbV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrKG1ha2VXZWFrUHRyKGluaXRpYWxD
b250YWluaW5nQmxvY2spKQoreworICAgIC8vIExheW91dFN0YXRlIGlzIGFsd2F5cyBpbml0aWF0
ZWQgd2l0aCB0aGUgSUNCLgorICAgIEFTU0VSVCghaW5pdGlhbENvbnRhaW5pbmdCbG9jay5wYXJl
bnQoKSk7CisgICAgQVNTRVJUKGluaXRpYWxDb250YWluaW5nQmxvY2suZXN0YWJsaXNoZXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KCkpOworCisgICAgYXV0byYgZGlzcGxheUJveCA9IGRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgZGlzcGxheUJveC5z
ZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTm9u
Q29tcHV0ZWRNYXJnaW4oeyB9KTsKKyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHsg
fSk7CisgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbih7IH0pOwor
ICAgIGRpc3BsYXlCb3guc2V0Qm9yZGVyKHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRQYWRkaW5n
KHsgfSk7CisgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHsgfSk7CisgICAgZGlzcGxheUJveC5z
ZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRhaW5lclNpemUuaGVpZ2h0KCkpOworICAgIGRpc3BsYXlC
b3guc2V0Q29udGVudEJveFdpZHRoKGNvbnRhaW5lclNpemUud2lkdGgoKSk7CisKKyAgICBtX2Zv
cm1hdHRpbmdDb250ZXh0Um9vdExpc3RGb3JMYXlvdXQuYWRkKCZpbml0aWFsQ29udGFpbmluZ0Js
b2NrKTsKK30KKwordm9pZCBMYXlvdXRTdGF0ZTo6dXBkYXRlTGF5b3V0KCkKK3sKKyAgICBBU1NF
UlQoIW1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxheW91dC5pc0VtcHR5KCkpOworICAg
IGZvciAoYXV0byogbGF5b3V0Um9vdCA6IG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxh
eW91dCkKKyAgICAgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKCpsYXlvdXRSb290
KTsKKyAgICBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdExpc3RGb3JMYXlvdXQuY2xlYXIoKTsKK30K
Kwordm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0
IEJveCYgbGF5b3V0Um9vdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChsYXlvdXRSb290LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0g
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChsYXlvdXRSb290
KTsKKyAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gZm9ybWF0dGluZ1N0YXRlLmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGxheW91dFJvb3QpOworICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlv
dXQoKTsKKyAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMo
bGF5b3V0Um9vdCk7Cit9CisKK0Rpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAgcmV0dXJuICpt
X2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgWyZsYXlvdXRCb3hdIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5
bGUoKSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lkIExheW91dFN0YXRlOjpz
dHlsZUNoYW5nZWQoY29uc3QgQm94JiBsYXlvdXRCb3gsIFN0eWxlRGlmZiBzdHlsZURpZmYpCit7
CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlRm9yQm94KGxheW91
dEJveCk7CisgICAgY29uc3QgQ29udGFpbmVyKiBpbnZhbGlkYXRpb25Sb290ID0gbnVsbHB0cjsK
KyAgICBpZiAoaXM8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGZvcm1hdHRpbmdTdGF0ZSkpCisgICAg
ICAgIGludmFsaWRhdGlvblJvb3QgPSBCbG9ja0ludmFsaWRhdGlvbjo6aW52YWxpZGF0ZShsYXlv
dXRCb3gsIHN0eWxlRGlmZiwgKnRoaXMsIGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihm
b3JtYXR0aW5nU3RhdGUpKS5yb290OworICAgIGVsc2UgaWYgKGlzPElubGluZUZvcm1hdHRpbmdT
dGF0ZT4oZm9ybWF0dGluZ1N0YXRlKSkKKyAgICAgICAgaW52YWxpZGF0aW9uUm9vdCA9IElubGlu
ZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZShsYXlvdXRCb3gsIHN0eWxlRGlmZiwgKnRoaXMsIGRv
d25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oZm9ybWF0dGluZ1N0YXRlKSkucm9vdDsKKyAg
ICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgQVNTRVJU
KGludmFsaWRhdGlvblJvb3QpOworICAgIG1fZm9ybWF0dGluZ0NvbnRleHRSb290TGlzdEZvckxh
eW91dC5hZGRWb2lkKGludmFsaWRhdGlvblJvb3QpOworfQorCit2b2lkIExheW91dFN0YXRlOjpt
YXJrTmVlZHNVcGRhdGUoY29uc3QgQm94JiwgT3B0aW9uU2V0PFVwZGF0ZVR5cGU+KQoreworfQor
CitGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29u
c3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAgYXV0byYgcm9vdCA9IGxheW91dEJveC5m
b3JtYXR0aW5nQ29udGV4dFJvb3QoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm1hdHRpbmdT
dGF0ZXMuY29udGFpbnMoJnJvb3QpKTsKKyAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5n
ZXQoJnJvb3QpOworfQorCitGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdAoreworICAg
IEFTU0VSVChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygmZm9ybWF0dGlu
Z1Jvb3QpKTsKKyAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5nZXQoJmZvcm1hdHRpbmdS
b290KTsKK30KKworRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZvcm1hdHRpbmdSb290
KQoreworICAgIEFTU0VSVChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkpOworCisgICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoKSkgeworICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1
cmUoJmZvcm1hdHRpbmdSb290LCBbJl0geworCisgICAgICAgICAgICAvLyBJZiB0aGUgYmxvY2sg
Y29udGFpbmVyIGJveCB0aGF0IGluaXRpYXRlcyB0aGlzIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQgYWxzbyBlc3RhYmxpc2hlcyBhIGJsb2NrIGNvbnRleHQsIHRoZSBmbG9hdHMgb3V0c2lkZSBv
ZiB0aGUgZm9ybWF0dGluZyByb290CisgICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVyZmVy
ZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KKyAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9ImZs
b2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBu
b24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3
IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KKyAgICAgICAgICAgIGlmIChmb3JtYXR0
aW5nUm9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0
aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisKKyAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUg
ZmxvYXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCisgICAgICAgICAgICAv
LyBGaW5kIHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdoaWNoIHRoaXMgZm9ybWF0dGluZyByb290
IGxpdmVzLCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFuZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRl
LgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihmb3JtYXR0aW5nU3RhdGVGb3JCb3goZm9ybWF0dGluZ1Jvb3QpLmZsb2F0aW5nU3RhdGUo
KSwgKnRoaXMpOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgfQorCisgICAgaWYg
KGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKSB7Cisg
ICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3Qs
IFsmXSB7CisKKyAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMg
ZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRl
KCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIH0KKworICAgIENSQVNIKCk7Cit9CisKK30KK30KKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAJKHJldmlzaW9uIDIzODk2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5b3V0
Rm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKIAogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0U3RhdGUuaAkocmV2aXNpb24gMjM4OTY4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Rm9ybWF0dGluZ1N0YXRlLmg6MjM4OTY4KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQorY2xhc3MgUmVuZGVyVmlldzsKKyNlbmRpZgorCituYW1lc3BhY2UgRGlzcGxheSB7Citj
bGFzcyBCb3g7Cit9CisKK25hbWVzcGFjZSBMYXlvdXQgeworCitlbnVtIGNsYXNzIFN0eWxlRGlm
ZjsKK2NsYXNzIEJveDsKK2NsYXNzIENvbnRhaW5lcjsKK2NsYXNzIEZvcm1hdHRpbmdTdGF0ZTsK
KworLy8gTGF5b3V0U3RhdGUgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBsYXlvdXQuIEl0IHRha2Vz
IHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgd2hpY2ggYWN0cyBhcyB0aGUgcm9vdCBvZiB0
aGUgbGF5b3V0IGNvbnRleHQuCisvLyBMYXlvdXRTdGF0ZTo6bGF5b3V0KCkgZ2VuZXJhdGVzIHRo
ZSBkaXNwbGF5IHRyZWUgZm9yIHRoZSByb290IGNvbnRhaW5lcidzIHN1YnRyZWUgKGl0IGRvZXMg
bm90IHJ1biBsYXlvdXQgb24gdGhlIHJvb3QgdGhvdWdoKS4KKy8vIE5vdGUsIHdoaWxlIHRoZSBp
bml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgaXMgZW50cnkgcG9pbnQgZm9yIHRoZSBpbml0aWFsIGxh
eW91dCwgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbmVlZCB0byBiZSB0aGUgZW50cnkgcG9pbnQg
b2YgYW55CisvLyBzdWJzZXF1ZW50IGxheW91dHMgKHN1YnRyZWUgbGF5b3V0KS4gQSBub24taW5p
dGlhbCwgc3VidHJlZSBsYXlvdXQgY291bGQgYmUgaW5pdGlhdGVkIG9uIG11bHRpcGxlIGZvcm1h
dHRpbmcgY29udGV4dHMuCisvLyBFYWNoIGZvcm1hdHRpbmcgY29udGV4dCBoYXMgYW4gZW50cnkg
cG9pbnQgZm9yIGxheW91dCwgd2hpY2ggcG90ZW5pdGFsbHkgbWVhbnMgbXVsdGlwbGUgZW50cnkg
cG9pbnRzIHBlciBsYXlvdXQgZnJhbWUuCisvLyBMYXlvdXRTdGF0ZSBhbHNvIGhvbGRzIHRoZSBm
b3JtYXR0aW5nIHN0YXRlcy4gVGhleSBjYWNoZSBmb3JtYXR0aW5nIGNvbnRleHQgc3BlY2lmaWMg
ZGF0YSB0byBlbmFibGUgcGVyZm9ybWFudCBpbmNyZW1lbnRhbCBsYXlvdXRzLgorY2xhc3MgTGF5
b3V0U3RhdGUgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTGF5b3V0U3RhdGUpOworcHVi
bGljOgorICAgIExheW91dFN0YXRlKGNvbnN0IENvbnRhaW5lciYgaW5pdGlhbENvbnRhaW5pbmdC
bG9jaywgY29uc3QgTGF5b3V0U2l6ZSYpOworCisgICAgdm9pZCB1cGRhdGVMYXlvdXQoKTsKKyAg
ICB2b2lkIHN0eWxlQ2hhbmdlZChjb25zdCBCb3gmLCBTdHlsZURpZmYpOworICAgIHZvaWQgc2V0
SW5RdWlya3NNb2RlKGJvb2wgaW5RdWlya3NNb2RlKSB7IG1faW5RdWlya3NNb2RlID0gaW5RdWly
a3NNb2RlOyB9CisKKyAgICBlbnVtIGNsYXNzIFVwZGF0ZVR5cGUgeworICAgICAgICBPdmVyZmxv
dyA9IDEgPDwgMCwKKyAgICAgICAgUG9zaXRpb24gPSAxIDw8IDEsCisgICAgICAgIFNpemUgICAg
ID0gMSA8PCAyLAorICAgICAgICBBbGwgICAgICA9IE92ZXJmbG93IHwgUG9zaXRpb24gfCBTaXpl
CisgICAgfTsKKyAgICB2b2lkIG1hcmtOZWVkc1VwZGF0ZShjb25zdCBCb3gmLCBPcHRpb25TZXQ8
VXBkYXRlVHlwZT4pOworICAgIGJvb2wgbmVlZHNVcGRhdGUoY29uc3QgQm94JikgY29uc3Q7CisK
KyAgICBGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZUZvckJveChjb25zdCBCb3gmKSBj
b25zdDsKKyAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNv
bnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0OworICAgIEZvcm1hdHRpbmdTdGF0ZSYgY3Jl
YXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb25zdCBCb3gmIGZv
cm1hdHRpbmdSb290KTsKKworICAgIERpc3BsYXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJv
eChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3Q7CisgICAgYm9vbCBoYXNEaXNwbGF5Qm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBtX2xheW91dFRvRGlzcGxheUJveC5j
b250YWlucygmbGF5b3V0Qm94KTsgfQorCisgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7
IHJldHVybiBtX2luUXVpcmtzTW9kZTsgfQorICAgIC8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9u
bHkKKyAgICB2b2lkIHZlcmlmeUFuZE91dHB1dE1pc21hdGNoaW5nTGF5b3V0VHJlZShjb25zdCBS
ZW5kZXJWaWV3JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY29uc3QgQ29udGFpbmVyJiBpbml0
aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gKm1faW5pdGlhbENvbnRhaW5pbmdC
bG9jazsgfQorICAgIHZvaWQgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IEJv
eCYpOworCisgICAgV2Vha1B0cjxjb25zdCBDb250YWluZXI+IG1faW5pdGlhbENvbnRhaW5pbmdC
bG9jazsKKyAgICBIYXNoU2V0PGNvbnN0IENvbnRhaW5lcio+IG1fZm9ybWF0dGluZ0NvbnRleHRS
b290TGlzdEZvckxheW91dDsKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0
cjxGb3JtYXR0aW5nU3RhdGU+PiBtX2Zvcm1hdHRpbmdTdGF0ZXM7CisgICAgbXV0YWJsZSBIYXNo
TWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpCb3g+PiBtX2xheW91dFRv
RGlzcGxheUJveDsKKyAgICBib29sIG1faW5RdWlya3NNb2RlIHsgZmFsc2UgfTsKK307CisKK30K
K30KKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAJKHJl
dmlzaW9uIDIzODk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91
dFN0YXRlLmgiCiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzg5NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiRmxvYXRp
bmdTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRh
aW5lci5oIgotI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxh
eW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpJbmRleDogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCShyZXZpc2lvbiAyMzg5Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRRdWlya3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKLSNpbmNs
dWRlICJMYXlvdXRGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tJbnZhbGlkYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tJbnZh
bGlkYXRpb24uY3BwCShyZXZpc2lvbiAyMzg5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkxheW91
dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgotI2luY2x1ZGUgIkxheW91dEZv
cm1hdHRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9pZGVyLmNwcAkocmV2aXNpb24gMjM4
OTY4KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJMYXlvdXRCb3guaCIK
ICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKLSNpbmNsdWRlICJMYXlvdXRGb3JtYXR0aW5n
U3RhdGUuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzODk2
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZsb2F0Qm94LmgiCiAj
aW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCi0jaW5j
bHVkZSAiTGF5b3V0Rm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5j
cHAJKHJldmlzaW9uIDIzODk2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxv
YXRpbmdTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRl
ICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUg
IkxheW91dENvbnRhaW5lci5oIgotI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5oIgor
I2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjM4OTY4KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw5ICszNSw5IEBACiAjaW5jbHVkZSAiSW5saW5lUnVuUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKLSNpbmNsdWRl
ICJMYXlvdXRGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRJbmxpbmVCb3guaCIK
ICNpbmNsdWRlICJMYXlvdXRJbmxpbmVDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJUZXh0dXRpbC5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAkocmV2aXNpb24gMjM4OTY4KQorKysgU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250YWluZXIuaCIKLSNpbmNsdWRlICJMYXlvdXRGb3JtYXR0aW5nU3RhdGUuaCIK
KyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlRleHRVdGlsLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSW52YWxpZGF0aW9uLmNwcAkocmV2aXNpb24g
MjM4OTY4KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
SW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkludmFsaWRhdGlvbi5oIgog
I2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5o
IgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAkocmV2aXNpb24g
MjM4OTY4KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVkZSAiTGF5
b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxh
eW91dENvbnRhaW5lci5oIgotI2luY2x1ZGUgIkxheW91dEZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkxheW91dElubGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dElubGluZUNvbnRhaW5l
ci5oIgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIK
ICNpbmNsdWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRl
eHQuY3BwCShyZXZpc2lvbiAyMzg5NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAjaWYg
RU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0
YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCi0jaW5jbHVkZSAiTGF5b3V0Rm9y
bWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJMYXlv
dXRUcmVlQnVpbGRlci5oIgogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>