<?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>47200</bug_id>
          
          <creation_ts>2010-10-05 11:43:31 -0700</creation_ts>
          <short_desc>Rename StringHasherFunctions.h to StringHasher.h</short_desc>
          <delta_ts>2010-10-16 03:55:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289785</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-05 11:43:31 -0700</bug_when>
    <thetext>see patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289804</commentid>
    <comment_count>1</comment_count>
      <attachid>69824</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-05 12:16:13 -0700</bug_when>
    <thetext>Created attachment 69824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289814</commentid>
    <comment_count>2</comment_count>
      <attachid>69829</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-05 12:44:04 -0700</bug_when>
    <thetext>Created attachment 69829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292352</commentid>
    <comment_count>3</comment_count>
      <attachid>69829</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-10 12:37:19 -0700</bug_when>
    <thetext>Comment on attachment 69829
Patch

Please land this manually with SVN to make sure we keep the history of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295118</commentid>
    <comment_count>4</comment_count>
      <attachid>69829</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-16 03:52:05 -0700</bug_when>
    <thetext>Comment on attachment 69829
Patch

Clearing flags on attachment: 69829

Manually committed r69912: &lt;http://trac.webkit.org/changeset/69912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295119</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-16 03:55:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69824</attachid>
            <date>2010-10-05 12:16:13 -0700</date>
            <delta_ts>2010-10-05 12:44:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47200.patch</filename>
            <type>text/plain</type>
            <size>22245</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0xMC0wNSAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgU3RyaW5nSGFzaGVyRnVuY3Rpb25zLmgg
dG8gU3RyaW5nSGFzaGVyLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MjAwCisKKyAgICAgICAgTm93IFN0cmluZ0hhc2hlckZ1bmN0aW9ucy5oIG9u
bHkgY29udGFpbnMgdGhlIFN0cmluZ0hhc2hlciBjbGFzcywgc28gcmVuYW1lIGl0IHRvIHRoZSBj
b3JyZWN0IG5hbWUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3dGYvU3RyaW5nSGFzaGVyLmg6IENvcGllZCBmcm9tIEphdmFTY3JpcHRD
b3JlL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmguCisgICAgICAgIChXVEY6OlN0cmluZ0hhc2hl
cjo6U3RyaW5nSGFzaGVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0ZXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdIYXNoZXI6Omhhc2gpOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6
OmNyZWF0ZUhhc2gpOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmNyZWF0ZUJsb2JIYXNo
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjpkZWZhdWx0Q292ZXJ0ZXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3RlcnNUb0hhc2gpOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0hhc2guaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisK
IDIwMTAtMTAtMDEgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCUphdmFTY3JpcHRDb3JlL3d0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaCBcCiAJSmF2YVNjcmlw
dENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nRXh0
cmFzLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmggXAorCUph
dmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RD
UGFja2VkQ2FjaGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RDUGFnZU1hcC5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvVENTcGluTG9jay5oIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5neXBpCShyZXZpc2lvbiA2OTAwOSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQyMiw3ICs0MjIsNyBAQAogICAgICAgICAgICAg
J3d0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaCcsCiAgICAgICAgICAgICAnd3RmL1N0ZExpYkV4dHJh
cy5oJywKICAgICAgICAgICAgICd3dGYvU3RyaW5nRXh0cmFzLmgnLAotICAgICAgICAgICAgJ3d0
Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmgnLAorICAgICAgICAgICAgJ3d0Zi9TdHJpbmdIYXNoZXIu
aCcsCiAgICAgICAgICAgICAnd3RmL1RDUGFja2VkQ2FjaGUuaCcsCiAgICAgICAgICAgICAnd3Rm
L3F0L01haW5UaHJlYWRRdC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9xdC9TdHJpbmdRdC5jcHAn
LApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY5MDA5KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTgyLDcgKzE4Miw3IEBACiAJCTVENTM3MjZGMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFj
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDUz
NzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovOyB9OwogCQk1RDVEOEFCNjBFMEQw
QTcyMDBGOUM2OTIgLyoganNjIGluIENvcHkgSW50byBGcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLzsg
fTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKLQkJNUQ2M0U5QUQxMEYyQkQ2RTAwRkM4
QUU5IC8qIFN0cmluZ0hhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENjNFOUFDMTBGMkJENkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNo
RnVuY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNUQ2M0U5QUQxMEYyQkQ2RTAwRkM4QUU5IC8qIFN0cmluZ0hhc2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ2M0U5QUMxMEYyQkQ2RTAw
RkM4QUU5IC8qIFN0cmluZ0hhc2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTVENkE1NjZCMEYwNTk5NTUwMDI2NjE0NSAvKiBUaHJlYWRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ2QTU2
NkEwRjA1OTk1NTAwMjY2MTQ1IC8qIFRocmVhZGluZy5jcHAgKi87IH07CiAJCTVERTZFNUIzMEUx
NzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVh
dGVfaGFzaF90YWJsZSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk2
NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8q
IEpTVHlwZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzQxLDcgKzc0MSw3IEBACiAJCTVENTM3MjZFMEUxQzU0ODgwMDIxRTU0OSAvKiBU
cmFjaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1MzcyN0QwRTFDNTVFQzAwMjFFNTQ5IC8qIFRy
YWNpbmdEdHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2luZ0R0
cmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBG
OUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5k
eWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07Ci0JCTVENjNFOUFDMTBGMkJENkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNoRnVuY3Rp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUQ2M0U5QUMxMEYyQkQ2RTAwRkM4
QUU5IC8qIFN0cmluZ0hhc2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJpbmdIYXNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ2QTU2NkEwRjA1
OTk1NTAwMjY2MTQ1IC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
REE0Nzk2NTBDRkJDRjU2MDA5MzI4QTAgLyogVENQYWNrZWRDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUQ1BhY2tlZENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEQkQxOEFGMEM1NDAxQTcwMEMxNUVBRSAvKiBNYWxsb2Nab25lU3VwcG9ydC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWxsb2Nab25lU3VwcG9ydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyOCw3ICsxNTI4LDcgQEAKIAkJCQk4NjhC
RkE1RjExN0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3RydWN0b3JzLmggKi8sCiAJCQkJRkUx
QjQ0NzkwRUNDRDczQjAwNEY0REQxIC8qIFN0ZExpYkV4dHJhcy5oICovLAogCQkJCUUxMUQ1MTc1
MEIyRTc5OEQwMDU2QzE4OCAvKiBTdHJpbmdFeHRyYXMuaCAqLywKLQkJCQk1RDYzRTlBQzEwRjJC
RDZFMDBGQzhBRTkgLyogU3RyaW5nSGFzaEZ1bmN0aW9ucy5oICovLAorCQkJCTVENjNFOUFDMTBG
MkJENkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNoZXIuaCAqLywKIAkJCQk1REE0Nzk2NTBDRkJDRjU2
MDA5MzI4QTAgLyogVENQYWNrZWRDYWNoZS5oICovLAogCQkJCTY1NDFCRDZFMDhFODBBMTcwMDJD
QkVFNyAvKiBUQ1BhZ2VNYXAuaCAqLywKIAkJCQk2NTQxQkQ2RjA4RTgwQTE3MDAyQ0JFRTcgLyog
VENTcGluTG9jay5oICovLApAQCAtMjI1NCw3ICsyMjU0LDcgQEAKIAkJCQlCQzE4QzQ2NjBFMTZG
NUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDY3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OEJGQTBEMTE3Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1RDYzRTlBRDEwRjJCRDZFMDBGQzhBRTkgLyogU3RyaW5nSGFzaEZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUQ2M0U5QUQxMEYyQkQ2RTAwRkM4QUU5IC8qIFN0cmluZ0hh
c2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4QkZBMEYxMTdDRUZEMTAwQjkwOEIxIC8qIFN0
cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Qjk5QUU0MTE3RTU3ODEwMERGNUE5MCAv
KiBTdHJpbmdJbXBsQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjgwRTE2RjVDRDAw
QjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8sDQpJbmRleDogSmF2YVNjcmlw
dENvcmVcd3RmXFN0cmluZ0hhc2hGdW5jdGlvbnMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlXHd0ZlxTdHJpbmdIYXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDY5MDA5KQ0KKysrIEph
dmFTY3JpcHRDb3JlXHd0ZlxTdHJpbmdIYXNoRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkNCkBA
IC0xLDE3MCArMCwwIEBADQotLyoNCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDgs
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIENvcHlyaWdodCAoQykg
MjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+DQotICoNCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
DQotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMNCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXINCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQotICoNCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
Zg0KLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VDQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuDQotICoNCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8N
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLA0KLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLg0KLSAqDQot
ICovDQotI2lmbmRlZiBXVEZfU3RyaW5nSGFzaEZ1bmN0aW9uc19oDQotI2RlZmluZSBXVEZfU3Ry
aW5nSGFzaEZ1bmN0aW9uc19oDQotDQotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4N
Ci0NCi1uYW1lc3BhY2UgV1RGIHsNCi0NCi0vLyBHb2xkZW4gcmF0aW8gLSBhcmJpdHJhcnkgc3Rh
cnQgdmFsdWUgdG8gYXZvaWQgbWFwcGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MNCi1zdGF0aWMgY29u
c3QgdW5zaWduZWQgc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWUgPSAweDllMzc3OWI5VTsNCi0NCi0v
LyBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaA0KLS8vIGh0dHA6Ly93d3cuYXppbGxpb25tb25r
ZXlzLmNvbS9xZWQvaGFzaC5odG1sDQotLy8gY2hhciogZGF0YSBpcyBpbnRlcnByZXRlZCBhcyBs
YXRpbi1lbmNvZGVkICh6ZXJvIGV4dGVuZGVkIHRvIDE2IGJpdHMpLg0KLWNsYXNzIFN0cmluZ0hh
c2hlciB7DQotcHVibGljOg0KLSAgICBpbmxpbmUgU3RyaW5nSGFzaGVyKCkNCi0gICAgICAgIDog
bV9oYXNoKHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlKQ0KLSAgICAgICAgLCBtX2hhc1BlbmRpbmdD
aGFyYWN0ZXIoZmFsc2UpDQotICAgICAgICAsIG1fcGVuZGluZ0NoYXJhY3RlcigwKQ0KLSAgICB7
DQotICAgIH0NCi0NCi0gICAgaW5saW5lIHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hh
ciBiKQ0KLSAgICB7DQotICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGluZ0NoYXJhY3Rlcik7DQot
ICAgICAgICBhZGRDaGFyYWN0ZXJzVG9IYXNoKGEsIGIpOw0KLSAgICB9DQotDQotICAgIGlubGlu
ZSB2b2lkIGFkZENoYXJhY3RlcihVQ2hhciBjaCkNCi0gICAgew0KLSAgICAgICAgaWYgKG1faGFz
UGVuZGluZ0NoYXJhY3Rlcikgew0KLSAgICAgICAgICAgIGFkZENoYXJhY3RlcnNUb0hhc2gobV9w
ZW5kaW5nQ2hhcmFjdGVyLCBjaCk7DQotICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVy
ID0gZmFsc2U7DQotICAgICAgICAgICAgcmV0dXJuOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAg
bV9wZW5kaW5nQ2hhcmFjdGVyID0gY2g7DQotICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIg
PSB0cnVlOw0KLSAgICB9DQotDQotICAgIGlubGluZSB1bnNpZ25lZCBoYXNoKCkgY29uc3QNCi0g
ICAgew0KLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9oYXNoOw0KLQ0KLSAgICAgICAgLy8g
SGFuZGxlIGVuZCBjYXNlLg0KLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3Rlcikgew0K
LSAgICAgICAgICAgIHJlc3VsdCArPSBtX3BlbmRpbmdDaGFyYWN0ZXI7DQotICAgICAgICAgICAg
cmVzdWx0IF49IHJlc3VsdCA8PCAxMTsNCi0gICAgICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+
IDE3Ow0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBm
aW5hbCAzMSBiaXRzLg0KLSAgICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAzOw0KLSAgICAgICAg
cmVzdWx0ICs9IHJlc3VsdCA+PiA1Ow0KLSAgICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAyOw0K
LSAgICAgICAgcmVzdWx0ICs9IHJlc3VsdCA+PiAxNTsNCi0gICAgICAgIHJlc3VsdCBePSByZXN1
bHQgPDwgMTA7DQotDQotICAgICAgICAvLyBGaXJzdCBiaXQgaXMgdXNlZCBpbiBVU3RyaW5nSW1w
bCBmb3IgbV9pc0lkZW50aWZpZXIuDQotICAgICAgICByZXN1bHQgJj0gMHg3ZmZmZmZmZjsNCi0N
Ci0gICAgICAgIC8vIFRoaXMgYXZvaWRzIGV2ZXIgcmV0dXJuaW5nIGEgaGFzaCBjb2RlIG9mIDAs
IHNpbmNlIHRoYXQgaXMgdXNlZCB0bw0KLSAgICAgICAgLy8gc2lnbmFsICJoYXNoIG5vdCBjb21w
dXRlZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlrZWx5IHRvIGJlDQotICAgICAgICAv
LyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyAwIHdoZW4gdGhlIGxvdyBiaXRzIGFyZSBtYXNrZWQu
DQotICAgICAgICBpZiAoIXJlc3VsdCkNCi0gICAgICAgICAgICByZXR1cm4gMHg0MDAwMDAwMDsN
Ci0NCi0gICAgICAgIHJldHVybiByZXN1bHQ7DQotICAgIH0NCi0NCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNyZWF0
ZUhhc2goY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQ0KLSAgICB7DQotICAgICAgICBT
dHJpbmdIYXNoZXIgaGFzaGVyOw0KLSAgICAgICAgYm9vbCByZW0gPSBsZW5ndGggJiAxOw0KLSAg
ICAgICAgbGVuZ3RoID4+PSAxOw0KLQ0KLSAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7DQotICAg
ICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoQ29udmVydGVyKGRhdGFbMF0pLCBDb252ZXJ0
ZXIoZGF0YVsxXSkpOw0KLSAgICAgICAgICAgIGRhdGEgKz0gMjsNCi0gICAgICAgIH0NCi0NCi0g
ICAgICAgIGlmIChyZW0pDQotICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcihDb252ZXJ0
ZXIoKmRhdGEpKTsNCi0NCi0gICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOw0KLSAgICB9DQot
DQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRhdGEpDQotICAgIHsNCi0gICAgICAg
IFN0cmluZ0hhc2hlciBoYXNoZXI7DQotDQotICAgICAgICB3aGlsZSAodHJ1ZSkgew0KLSAgICAg
ICAgICAgIFVDaGFyIGIwID0gQ29udmVydGVyKCpkYXRhKyspOw0KLSAgICAgICAgICAgIGlmICgh
YjApDQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIFVDaGFyIGIxID0gQ29u
dmVydGVyKCpkYXRhKyspOw0KLSAgICAgICAgICAgIGlmICghYjEpIHsNCi0gICAgICAgICAgICAg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcihiMCk7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAg
ICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhiMCwgYjEp
Ow0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7DQotICAgIH0N
Ci0NCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjcmVh
dGVIYXNoKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkNCi0gICAgew0KLSAgICAgICAg
cmV0dXJuIGNyZWF0ZUhhc2g8VCwgZGVmYXVsdENvdmVydGVyPihkYXRhLCBsZW5ndGgpOw0KLSAg
ICB9DQotDQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
Y3JlYXRlSGFzaChjb25zdCBUKiBkYXRhKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gY3JlYXRl
SGFzaDxULCBkZWZhdWx0Q292ZXJ0ZXI+KGRhdGEpOw0KLSAgICB9DQotDQotICAgIHRlbXBsYXRl
PHNpemVfdCBsZW5ndGg+IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY3JlYXRlQmxvYkhhc2goY29u
c3Qgdm9pZCogZGF0YSkNCi0gICAgew0KLSAgICAgICAgQ09NUElMRV9BU1NFUlQoIShsZW5ndGgg
JSA0KSwgbGVuZ3RoX211c3RfYmVfYV9tdWx0aWJsZV9vZl9mb3VyKTsNCi0gICAgICAgIHJldHVy
biBjcmVhdGVIYXNoPFVDaGFyPihzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGRhdGEpLCBsZW5n
dGggLyBzaXplb2YoVUNoYXIpKTsNCi0gICAgfQ0KLQ0KLXByaXZhdGU6DQotICAgIHN0YXRpYyBp
bmxpbmUgVUNoYXIgZGVmYXVsdENvdmVydGVyKFVDaGFyIGNoKQ0KLSAgICB7DQotICAgICAgICBy
ZXR1cm4gY2g7DQotICAgIH0NCi0NCi0gICAgc3RhdGljIGlubGluZSBVQ2hhciBkZWZhdWx0Q292
ZXJ0ZXIoY2hhciBjaCkNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KGNoKTsNCi0gICAgfQ0KLQ0KLSAgICBpbmxpbmUgdm9pZCBhZGRDaGFyYWN0ZXJz
VG9IYXNoKFVDaGFyIGEsIFVDaGFyIGIpDQotICAgIHsNCi0gICAgICAgIG1faGFzaCArPSBhOw0K
LSAgICAgICAgdW5zaWduZWQgdG1wID0gKGIgPDwgMTEpIF4gbV9oYXNoOw0KLSAgICAgICAgbV9o
YXNoID0gKG1faGFzaCA8PCAxNikgXiB0bXA7DQotICAgICAgICBtX2hhc2ggKz0gbV9oYXNoID4+
IDExOw0KLSAgICB9DQotDQotICAgIHVuc2lnbmVkIG1faGFzaDsNCi0gICAgYm9vbCBtX2hhc1Bl
bmRpbmdDaGFyYWN0ZXI7DQotICAgIFVDaGFyIG1fcGVuZGluZ0NoYXJhY3RlcjsNCi19Ow0KLQ0K
LX0gLy8gbmFtZXNwYWNlIFdURg0KLQ0KLSNlbmRpZiAvLyBXVEZfU3RyaW5nSGFzaEZ1bmN0aW9u
c19oDQpJbmRleDogSmF2YVNjcmlwdENvcmVcd3RmXFN0cmluZ0hhc2hlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlXHd0ZlxTdHJpbmdIYXNoZXIuaAkocmV2aXNpb24gNjkwMDkpCShm
cm9tIEphdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmg6NjkwMDkpCisrKyBK
YXZhU2NyaXB0Q29yZVx3dGZcU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJp
Y2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFdURl9TdHJpbmdIYXNo
RnVuY3Rpb25zX2gKKyNkZWZpbmUgV1RGX1N0cmluZ0hhc2hGdW5jdGlvbnNfaAorCisjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gR29sZGVu
IHJhdGlvIC0gYXJiaXRyYXJ5IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0
byBhbGwgMCdzCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWUg
PSAweDllMzc3OWI5VTsKKworLy8gUGF1bCBIc2llaCdzIFN1cGVyRmFzdEhhc2gKKy8vIGh0dHA6
Ly93d3cuYXppbGxpb25tb25rZXlzLmNvbS9xZWQvaGFzaC5odG1sCisvLyBjaGFyKiBkYXRhIGlz
IGludGVycHJldGVkIGFzIGxhdGluLWVuY29kZWQgKHplcm8gZXh0ZW5kZWQgdG8gMTYgYml0cyku
CitjbGFzcyBTdHJpbmdIYXNoZXIgeworcHVibGljOgorICAgIGlubGluZSBTdHJpbmdIYXNoZXIo
KQorICAgICAgICA6IG1faGFzaChzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSkKKyAgICAgICAgLCBt
X2hhc1BlbmRpbmdDaGFyYWN0ZXIoZmFsc2UpCisgICAgICAgICwgbV9wZW5kaW5nQ2hhcmFjdGVy
KDApCisgICAgeworICAgIH0KKworICAgIGlubGluZSB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIg
YSwgVUNoYXIgYikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nQ2hhcmFjdGVy
KTsKKyAgICAgICAgYWRkQ2hhcmFjdGVyc1RvSGFzaChhLCBiKTsKKyAgICB9CisKKyAgICBpbmxp
bmUgdm9pZCBhZGRDaGFyYWN0ZXIoVUNoYXIgY2gpCisgICAgeworICAgICAgICBpZiAobV9oYXNQ
ZW5kaW5nQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzVG9IYXNoKG1fcGVu
ZGluZ0NoYXJhY3RlciwgY2gpOworICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3BlbmRp
bmdDaGFyYWN0ZXIgPSBjaDsKKyAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gdHJ1ZTsK
KyAgICB9CisKKyAgICBpbmxpbmUgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBtX2hhc2g7CisKKyAgICAgICAgLy8gSGFuZGxlIGVuZCBjYXNl
LgorICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICByZXN1
bHQgKz0gbV9wZW5kaW5nQ2hhcmFjdGVyOworICAgICAgICAgICAgcmVzdWx0IF49IHJlc3VsdCA8
PCAxMTsKKyAgICAgICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4gMTc7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDMxIGJpdHMuCisgICAgICAg
IHJlc3VsdCBePSByZXN1bHQgPDwgMzsKKyAgICAgICAgcmVzdWx0ICs9IHJlc3VsdCA+PiA1Owor
ICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDI7CisgICAgICAgIHJlc3VsdCArPSByZXN1bHQg
Pj4gMTU7CisgICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMTA7CisKKyAgICAgICAgLy8gRmly
c3QgYml0IGlzIHVzZWQgaW4gVVN0cmluZ0ltcGwgZm9yIG1faXNJZGVudGlmaWVyLgorICAgICAg
ICByZXN1bHQgJj0gMHg3ZmZmZmZmZjsKKworICAgICAgICAvLyBUaGlzIGF2b2lkcyBldmVyIHJl
dHVybmluZyBhIGhhc2ggY29kZSBvZiAwLCBzaW5jZSB0aGF0IGlzIHVzZWQgdG8KKyAgICAgICAg
Ly8gc2lnbmFsICJoYXNoIG5vdCBjb21wdXRlZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMg
bGlrZWx5IHRvIGJlCisgICAgICAgIC8vIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIDAgd2hlbiB0
aGUgbG93IGJpdHMgYXJlIG1hc2tlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAg
ICByZXR1cm4gMHg0MDAwMDAwMDsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CisgICAgICAgIGJvb2wgcmVtID0gbGVu
Z3RoICYgMTsKKyAgICAgICAgbGVuZ3RoID4+PSAxOworCisgICAgICAgIHdoaWxlIChsZW5ndGgt
LSkgeworICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoQ29udmVydGVyKGRhdGFbMF0p
LCBDb252ZXJ0ZXIoZGF0YVsxXSkpOworICAgICAgICAgICAgZGF0YSArPSAyOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHJlbSkKKyAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoQ29u
dmVydGVyKCpkYXRhKSk7CisKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiBzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGNyZWF0ZUhhc2goY29uc3QgVCogZGF0YSkKKyAgICB7CisgICAgICAgIFN0
cmluZ0hhc2hlciBoYXNoZXI7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IFVDaGFyIGIwID0gQ29udmVydGVyKCpkYXRhKyspOworICAgICAgICAgICAgaWYgKCFiMCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFVDaGFyIGIxID0gQ29udmVydGVyKCpk
YXRhKyspOworICAgICAgICAgICAgaWYgKCFiMSkgeworICAgICAgICAgICAgICAgIGhhc2hlci5h
ZGRDaGFyYWN0ZXIoYjApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhiMCwgYjEpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGVIYXNoPFQsIGRl
ZmF1bHRDb3ZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNyZWF0ZUhhc2goY29uc3QgVCogZGF0YSkK
KyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGVIYXNoPFQsIGRlZmF1bHRDb3ZlcnRlcj4oZGF0
YSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjcmVhdGVCbG9iSGFzaChjb25zdCB2b2lkKiBkYXRhKQorICAgIHsKKyAgICAgICAg
Q09NUElMRV9BU1NFUlQoIShsZW5ndGggJSA0KSwgbGVuZ3RoX211c3RfYmVfYV9tdWx0aWJsZV9v
Zl9mb3VyKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhhc2g8VUNoYXI+KHN0YXRpY19jYXN0PGNv
bnN0IFVDaGFyKj4oZGF0YSksIGxlbmd0aCAvIHNpemVvZihVQ2hhcikpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgaW5saW5lIFVDaGFyIGRlZmF1bHRDb3ZlcnRlcihVQ2hhciBjaCkK
KyAgICB7CisgICAgICAgIHJldHVybiBjaDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW5saW5lIFVD
aGFyIGRlZmF1bHRDb3ZlcnRlcihjaGFyIGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBhZGRD
aGFyYWN0ZXJzVG9IYXNoKFVDaGFyIGEsIFVDaGFyIGIpCisgICAgeworICAgICAgICBtX2hhc2gg
Kz0gYTsKKyAgICAgICAgdW5zaWduZWQgdG1wID0gKGIgPDwgMTEpIF4gbV9oYXNoOworICAgICAg
ICBtX2hhc2ggPSAobV9oYXNoIDw8IDE2KSBeIHRtcDsKKyAgICAgICAgbV9oYXNoICs9IG1faGFz
aCA+PiAxMTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2hhc2g7CisgICAgYm9vbCBtX2hhc1Bl
bmRpbmdDaGFyYWN0ZXI7CisgICAgVUNoYXIgbV9wZW5kaW5nQ2hhcmFjdGVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfU3RyaW5nSGFzaEZ1bmN0aW9uc19oCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nSGFzaGVyLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nSGFzaGVyLmgJKHJldmlzaW9uIDY5MDA5KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL1N0cmluZ0hhc2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsx
OCw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqCiAgKi8KLSNpZm5kZWYg
V1RGX1N0cmluZ0hhc2hGdW5jdGlvbnNfaAotI2RlZmluZSBXVEZfU3RyaW5nSGFzaEZ1bmN0aW9u
c19oCisjaWZuZGVmIFdURl9TdHJpbmdIYXNoZXJfaAorI2RlZmluZSBXVEZfU3RyaW5nSGFzaGVy
X2gKIAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIApAQCAtMTY3LDQgKzE2Nyw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0jZW5kaWYgLy8gV1RGX1N0cmlu
Z0hhc2hGdW5jdGlvbnNfaAorI2VuZGlmIC8vIFdURl9TdHJpbmdIYXNoZXJfaApJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oCShyZXZpc2lvbiA2OTAwOSkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0hhc2guaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgIldURlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nSGFzaEZ1
bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdIYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA2OTAwOSkKKysrIEphdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093bkZhc3RNYWxsb2NQdHIu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0hh
c2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nSGFzaGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGxCYXNlLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2
OTAwOSkKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDEwLTEwLTA1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSBTdHJpbmdIYXNoZXJGdW5jdGlvbnMuaCB0byBTdHJpbmdIYXNoZXIuaAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMDAKKworICAgICAgICAq
IEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hlci5oOiBDb3BpZWQgZnJv
bSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaEZ1bmN0aW9u
cy5oLgorCiAyMDEwLTA5LTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpJbmRleDogSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNo
RnVuY3Rpb25zLmgJKHJldmlzaW9uIDY5MDA5KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSAr
MCwwIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFzaEZ1bmN0aW9ucy5oPgpJ
bmRleDogSmF2YVNjcmlwdEdsdWVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXFN0cmluZ0hhc2hlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlxTdHJp
bmdIYXNoZXIuaAkocmV2aXNpb24gNjkwMDkpCShmcm9tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmg6NjkwMDkpCisrKyBKYXZhU2NyaXB0
R2x1ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0hhc2hGdW5jdGlv
bnMuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdI
YXNoZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9TdHJpbmdIYXNoZXIuaAkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEg
KzEgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdIYXNoRnVuY3Rpb25zLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFzaGVyLmg+CkluZGV4OiBXZWJDb3JlL0No
YW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTAw
OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFN0cmlu
Z0hhc2hlckZ1bmN0aW9ucy5oIHRvIFN0cmluZ0hhc2hlci5oCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIwMAorCisgICAgICAgICogRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBG
b3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmg6IENvcGllZCBmcm9tIFdlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaC4KKwogMjAxMC0wOS0y
OCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNcd3RmXFN0cmluZ0hhc2hlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXFN0cmluZ0hhc2hlci5oCShyZXZpc2lvbiA2OTAwOSkJ
KGZyb20gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaEZ1bmN0aW9ucy5o
OjY5MDA5KQorKysgV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcU3RyaW5nSGFzaGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1N0cmlu
Z0hhc2hGdW5jdGlvbnNfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdIYXNoRnVuY3Rpb25z
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdIYXNoRnVuY3Rpb25zLmg+CisjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hlci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVy
LmgJKHJldmlzaW9uIDY5MDA5KQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3Ry
aW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jaWZuZGVmIFdlYkNv
cmVfRldEX1N0cmluZ0hhc2hGdW5jdGlvbnNfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdI
YXNoRnVuY3Rpb25zX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdIYXNoRnVuY3Rp
b25zLmg+CisjaWZuZGVmIFdlYkNvcmVfRldEX1N0cmluZ0hhc2hlcl9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1N0cmluZ0hhc2hlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFz
aGVyLmg+CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69829</attachid>
            <date>2010-10-05 12:44:04 -0700</date>
            <delta_ts>2010-10-16 03:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47200b.patch</filename>
            <type>text/plain</type>
            <size>22503</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0xMC0wNSAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgU3RyaW5nSGFzaGVyRnVuY3Rpb25zLmgg
dG8gU3RyaW5nSGFzaGVyLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MjAwCisKKyAgICAgICAgTm93IFN0cmluZ0hhc2hlckZ1bmN0aW9ucy5oIG9u
bHkgY29udGFpbnMgdGhlIFN0cmluZ0hhc2hlciBjbGFzcywgc28gcmVuYW1lIGl0IHRvIHRoZSBj
b3JyZWN0IG5hbWUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3dGYvU3RyaW5nSGFzaGVyLmg6IENvcGllZCBmcm9tIEphdmFTY3JpcHRD
b3JlL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmguCisgICAgICAgIChXVEY6OlN0cmluZ0hhc2hl
cjo6U3RyaW5nSGFzaGVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0
ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0ZXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdIYXNoZXI6Omhhc2gpOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6
OmNyZWF0ZUhhc2gpOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmNyZWF0ZUJsb2JIYXNo
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjpkZWZhdWx0Q292ZXJ0ZXIpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3RlcnNUb0hhc2gpOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0hhc2guaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisK
IDIwMTAtMTAtMDEgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCUphdmFTY3JpcHRDb3JlL3d0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaCBcCiAJSmF2YVNjcmlw
dENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nRXh0
cmFzLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmggXAorCUph
dmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RD
UGFja2VkQ2FjaGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RDUGFnZU1hcC5oIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvVENTcGluTG9jay5oIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5neXBpCShyZXZpc2lvbiA2OTAwOSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQyMiw3ICs0MjIsNyBAQAogICAgICAgICAgICAg
J3d0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaCcsCiAgICAgICAgICAgICAnd3RmL1N0ZExpYkV4dHJh
cy5oJywKICAgICAgICAgICAgICd3dGYvU3RyaW5nRXh0cmFzLmgnLAotICAgICAgICAgICAgJ3d0
Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmgnLAorICAgICAgICAgICAgJ3d0Zi9TdHJpbmdIYXNoZXIu
aCcsCiAgICAgICAgICAgICAnd3RmL1RDUGFja2VkQ2FjaGUuaCcsCiAgICAgICAgICAgICAnd3Rm
L3F0L01haW5UaHJlYWRRdC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9xdC9TdHJpbmdRdC5jcHAn
LApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvag0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY5MDA5KQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTgyLDcgKzE4Miw3IEBACiAJCTVENTM3MjZGMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFj
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDUz
NzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovOyB9OwogCQk1RDVEOEFCNjBFMEQw
QTcyMDBGOUM2OTIgLyoganNjIGluIENvcHkgSW50byBGcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLzsg
fTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKLQkJNUQ2M0U5QUQxMEYyQkQ2RTAwRkM4
QUU5IC8qIFN0cmluZ0hhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENjNFOUFDMTBGMkJENkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNo
RnVuY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNUQ2M0U5QUQxMEYyQkQ2RTAwRkM4QUU5IC8qIFN0cmluZ0hhc2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ2M0U5QUMxMEYyQkQ2RTAw
RkM4QUU5IC8qIFN0cmluZ0hhc2hlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTVENkE1NjZCMEYwNTk5NTUwMDI2NjE0NSAvKiBUaHJlYWRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ2QTU2
NkEwRjA1OTk1NTAwMjY2MTQ1IC8qIFRocmVhZGluZy5jcHAgKi87IH07CiAJCTVERTZFNUIzMEUx
NzI4RUMwMDE4MDQwNyAvKiBjcmVhdGVfaGFzaF90YWJsZSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODU0MDI1NTU5N0QwMUZGNjBGNyAvKiBjcmVh
dGVfaGFzaF90YWJsZSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk2
NTA3RDI5RTBFODcxRTVFMDBEN0Q4OTYgLyogSlNUeXBlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8q
IEpTVHlwZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNzQxLDcgKzc0MSw3IEBACiAJCTVENTM3MjZFMEUxQzU0ODgwMDIxRTU0OSAvKiBU
cmFjaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWNpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1MzcyN0QwRTFDNTVFQzAwMjFFNTQ5IC8qIFRy
YWNpbmdEdHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2luZ0R0
cmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBG
OUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5k
eWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07Ci0JCTVENjNFOUFDMTBGMkJENkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNoRnVuY3Rp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmluZ0hhc2hGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUQ2M0U5QUMxMEYyQkQ2RTAwRkM4
QUU5IC8qIFN0cmluZ0hhc2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJpbmdIYXNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ2QTU2NkEwRjA1
OTk1NTAwMjY2MTQ1IC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
REE0Nzk2NTBDRkJDRjU2MDA5MzI4QTAgLyogVENQYWNrZWRDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUQ1BhY2tlZENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEQkQxOEFGMEM1NDAxQTcwMEMxNUVBRSAvKiBNYWxsb2Nab25lU3VwcG9ydC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWxsb2Nab25lU3VwcG9ydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyOCw3ICsxNTI4LDcgQEAKIAkJCQk4NjhC
RkE1RjExN0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3RydWN0b3JzLmggKi8sCiAJCQkJRkUx
QjQ0NzkwRUNDRDczQjAwNEY0REQxIC8qIFN0ZExpYkV4dHJhcy5oICovLAogCQkJCUUxMUQ1MTc1
MEIyRTc5OEQwMDU2QzE4OCAvKiBTdHJpbmdFeHRyYXMuaCAqLywKLQkJCQk1RDYzRTlBQzEwRjJC
RDZFMDBGQzhBRTkgLyogU3RyaW5nSGFzaEZ1bmN0aW9ucy5oICovLAorCQkJCTVENjNFOUFDMTBG
MkJENkUwMEZDOEFFOSAvKiBTdHJpbmdIYXNoZXIuaCAqLywKIAkJCQk1REE0Nzk2NTBDRkJDRjU2
MDA5MzI4QTAgLyogVENQYWNrZWRDYWNoZS5oICovLAogCQkJCTY1NDFCRDZFMDhFODBBMTcwMDJD
QkVFNyAvKiBUQ1BhZ2VNYXAuaCAqLywKIAkJCQk2NTQxQkQ2RjA4RTgwQTE3MDAyQ0JFRTcgLyog
VENTcGluTG9jay5oICovLApAQCAtMjI1NCw3ICsyMjU0LDcgQEAKIAkJCQlCQzE4QzQ2NjBFMTZG
NUNEMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDY3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OEJGQTBEMTE3Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1RDYzRTlBRDEwRjJCRDZFMDBGQzhBRTkgLyogU3RyaW5nSGFzaEZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUQ2M0U5QUQxMEYyQkQ2RTAwRkM4QUU5IC8qIFN0cmluZ0hh
c2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4QkZBMEYxMTdDRUZEMTAwQjkwOEIxIC8qIFN0
cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2Qjk5QUU0MTE3RTU3ODEwMERGNUE5MCAv
KiBTdHJpbmdJbXBsQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjgwRTE2RjVDRDAw
QjM0NDYwIC8qIFN0cmluZ09iamVjdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvU3RyaW5nSGFzaEZ1bmN0aW9ucy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvU3RyaW5nSGFzaEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBQ
YXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2lmbmRlZiBXVEZfU3RyaW5n
SGFzaEZ1bmN0aW9uc19oCi0jZGVmaW5lIFdURl9TdHJpbmdIYXNoRnVuY3Rpb25zX2gKLQotI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8vIEdv
bGRlbiByYXRpbyAtIGFyYml0cmFyeSBzdGFydCB2YWx1ZSB0byBhdm9pZCBtYXBwaW5nIGFsbCAw
J3MgdG8gYWxsIDAncwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0cmluZ0hhc2hpbmdTdGFydFZh
bHVlID0gMHg5ZTM3NzliOVU7Ci0KLS8vIFBhdWwgSHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBo
dHRwOi8vd3d3LmF6aWxsaW9ubW9ua2V5cy5jb20vcWVkL2hhc2guaHRtbAotLy8gY2hhciogZGF0
YSBpcyBpbnRlcnByZXRlZCBhcyBsYXRpbi1lbmNvZGVkICh6ZXJvIGV4dGVuZGVkIHRvIDE2IGJp
dHMpLgotY2xhc3MgU3RyaW5nSGFzaGVyIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgU3RyaW5nSGFz
aGVyKCkKLSAgICAgICAgOiBtX2hhc2goc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWUpCi0gICAgICAg
ICwgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKGZhbHNlKQotICAgICAgICAsIG1fcGVuZGluZ0NoYXJh
Y3RlcigwKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBhZGRDaGFyYWN0ZXJzKFVD
aGFyIGEsIFVDaGFyIGIpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGluZ0NoYXJh
Y3Rlcik7Ci0gICAgICAgIGFkZENoYXJhY3RlcnNUb0hhc2goYSwgYik7Ci0gICAgfQotCi0gICAg
aW5saW5lIHZvaWQgYWRkQ2hhcmFjdGVyKFVDaGFyIGNoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
aGFzUGVuZGluZ0NoYXJhY3RlcikgewotICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc1RvSGFzaCht
X3BlbmRpbmdDaGFyYWN0ZXIsIGNoKTsKLSAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3Rl
ciA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9w
ZW5kaW5nQ2hhcmFjdGVyID0gY2g7Ci0gICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IHRy
dWU7Ci0gICAgfQotCi0gICAgaW5saW5lIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9oYXNoOwotCi0gICAgICAgIC8vIEhhbmRsZSBlbmQg
Y2FzZS4KLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikgewotICAgICAgICAgICAg
cmVzdWx0ICs9IG1fcGVuZGluZ0NoYXJhY3RlcjsKLSAgICAgICAgICAgIHJlc3VsdCBePSByZXN1
bHQgPDwgMTE7Ci0gICAgICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE3OwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBmaW5hbCAzMSBiaXRzLgotICAg
ICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDM7Ci0gICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4g
NTsKLSAgICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAyOwotICAgICAgICByZXN1bHQgKz0gcmVz
dWx0ID4+IDE1OwotICAgICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDEwOwotCi0gICAgICAgIC8v
IEZpcnN0IGJpdCBpcyB1c2VkIGluIFVTdHJpbmdJbXBsIGZvciBtX2lzSWRlbnRpZmllci4KLSAg
ICAgICAgcmVzdWx0ICY9IDB4N2ZmZmZmZmY7Ci0KLSAgICAgICAgLy8gVGhpcyBhdm9pZHMgZXZl
ciByZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAg
ICAgIC8vIHNpZ25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0IiwgdXNpbmcgYSB2YWx1ZSB0aGF0
IGlzIGxpa2VseSB0byBiZQotICAgICAgICAvLyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyAwIHdo
ZW4gdGhlIGxvdyBiaXRzIGFyZSBtYXNrZWQuCi0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAg
ICAgICAgcmV0dXJuIDB4NDAwMDAwMDA7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY3JlYXRlSGFzaChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgewotICAgICAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOwotICAgICAgICBib29sIHJlbSA9
IGxlbmd0aCAmIDE7Ci0gICAgICAgIGxlbmd0aCA+Pj0gMTsKLQotICAgICAgICB3aGlsZSAobGVu
Z3RoLS0pIHsKLSAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKENvbnZlcnRlcihkYXRh
WzBdKSwgQ29udmVydGVyKGRhdGFbMV0pKTsKLSAgICAgICAgICAgIGRhdGEgKz0gMjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChyZW0pCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVy
KENvbnZlcnRlcigqZGF0YSkpOwotCi0gICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRhdGEpCi0gICAgewotICAgICAg
ICBTdHJpbmdIYXNoZXIgaGFzaGVyOwotCi0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
ICAgICBVQ2hhciBiMCA9IENvbnZlcnRlcigqZGF0YSsrKTsKLSAgICAgICAgICAgIGlmICghYjAp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBVQ2hhciBiMSA9IENvbnZlcnRl
cigqZGF0YSsrKTsKLSAgICAgICAgICAgIGlmICghYjEpIHsKLSAgICAgICAgICAgICAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVyKGIwKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoYjAsIGIxKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY3JlYXRlSGFzaChjb25zdCBUKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSGFzaDxU
LCBkZWZhdWx0Q292ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRh
dGEpCi0gICAgewotICAgICAgICByZXR1cm4gY3JlYXRlSGFzaDxULCBkZWZhdWx0Q292ZXJ0ZXI+
KGRhdGEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHNpemVfdCBsZW5ndGg+IHN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgY3JlYXRlQmxvYkhhc2goY29uc3Qgdm9pZCogZGF0YSkKLSAgICB7Ci0gICAg
ICAgIENPTVBJTEVfQVNTRVJUKCEobGVuZ3RoICUgNCksIGxlbmd0aF9tdXN0X2JlX2FfbXVsdGli
bGVfb2ZfZm91cik7Ci0gICAgICAgIHJldHVybiBjcmVhdGVIYXNoPFVDaGFyPihzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KGRhdGEpLCBsZW5ndGggLyBzaXplb2YoVUNoYXIpKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgc3RhdGljIGlubGluZSBVQ2hhciBkZWZhdWx0Q292ZXJ0ZXIoVUNoYXIg
Y2gpCi0gICAgewotICAgICAgICByZXR1cm4gY2g7Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGlu
ZSBVQ2hhciBkZWZhdWx0Q292ZXJ0ZXIoY2hhciBjaCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQg
YWRkQ2hhcmFjdGVyc1RvSGFzaChVQ2hhciBhLCBVQ2hhciBiKQotICAgIHsKLSAgICAgICAgbV9o
YXNoICs9IGE7Ci0gICAgICAgIHVuc2lnbmVkIHRtcCA9IChiIDw8IDExKSBeIG1faGFzaDsKLSAg
ICAgICAgbV9oYXNoID0gKG1faGFzaCA8PCAxNikgXiB0bXA7Ci0gICAgICAgIG1faGFzaCArPSBt
X2hhc2ggPj4gMTE7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbV9oYXNoOwotICAgIGJvb2wgbV9o
YXNQZW5kaW5nQ2hhcmFjdGVyOwotICAgIFVDaGFyIG1fcGVuZGluZ0NoYXJhY3RlcjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gV1RGX1N0cmluZ0hhc2hGdW5jdGlvbnNf
aApJbmRleDogSmF2YVNjcmlwdENvcmVcd3RmXFN0cmluZ0hhc2hlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlXHd0ZlxTdHJpbmdIYXNoZXIuaAkocmV2aXNpb24gNjkwMDkpCShmcm9t
IEphdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmg6NjkwMDkpCisrKyBKYXZh
U2NyaXB0Q29yZVx3dGZcU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sg
R2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFdURl9TdHJpbmdIYXNoRnVu
Y3Rpb25zX2gKKyNkZWZpbmUgV1RGX1N0cmluZ0hhc2hGdW5jdGlvbnNfaAorCisjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gR29sZGVuIHJh
dGlvIC0gYXJiaXRyYXJ5IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0byBh
bGwgMCdzCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWUgPSAw
eDllMzc3OWI5VTsKKworLy8gUGF1bCBIc2llaCdzIFN1cGVyRmFzdEhhc2gKKy8vIGh0dHA6Ly93
d3cuYXppbGxpb25tb25rZXlzLmNvbS9xZWQvaGFzaC5odG1sCisvLyBjaGFyKiBkYXRhIGlzIGlu
dGVycHJldGVkIGFzIGxhdGluLWVuY29kZWQgKHplcm8gZXh0ZW5kZWQgdG8gMTYgYml0cykuCitj
bGFzcyBTdHJpbmdIYXNoZXIgeworcHVibGljOgorICAgIGlubGluZSBTdHJpbmdIYXNoZXIoKQor
ICAgICAgICA6IG1faGFzaChzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSkKKyAgICAgICAgLCBtX2hh
c1BlbmRpbmdDaGFyYWN0ZXIoZmFsc2UpCisgICAgICAgICwgbV9wZW5kaW5nQ2hhcmFjdGVyKDAp
CisgICAgeworICAgIH0KKworICAgIGlubGluZSB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIgYSwg
VUNoYXIgYikKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsK
KyAgICAgICAgYWRkQ2hhcmFjdGVyc1RvSGFzaChhLCBiKTsKKyAgICB9CisKKyAgICBpbmxpbmUg
dm9pZCBhZGRDaGFyYWN0ZXIoVUNoYXIgY2gpCisgICAgeworICAgICAgICBpZiAobV9oYXNQZW5k
aW5nQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzVG9IYXNoKG1fcGVuZGlu
Z0NoYXJhY3RlciwgY2gpOworICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFs
c2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3BlbmRpbmdD
aGFyYWN0ZXIgPSBjaDsKKyAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBpbmxpbmUgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBtX2hhc2g7CisKKyAgICAgICAgLy8gSGFuZGxlIGVuZCBjYXNlLgor
ICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICByZXN1bHQg
Kz0gbV9wZW5kaW5nQ2hhcmFjdGVyOworICAgICAgICAgICAgcmVzdWx0IF49IHJlc3VsdCA8PCAx
MTsKKyAgICAgICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4gMTc7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDMxIGJpdHMuCisgICAgICAgIHJl
c3VsdCBePSByZXN1bHQgPDwgMzsKKyAgICAgICAgcmVzdWx0ICs9IHJlc3VsdCA+PiA1OworICAg
ICAgICByZXN1bHQgXj0gcmVzdWx0IDw8IDI7CisgICAgICAgIHJlc3VsdCArPSByZXN1bHQgPj4g
MTU7CisgICAgICAgIHJlc3VsdCBePSByZXN1bHQgPDwgMTA7CisKKyAgICAgICAgLy8gRmlyc3Qg
Yml0IGlzIHVzZWQgaW4gVVN0cmluZ0ltcGwgZm9yIG1faXNJZGVudGlmaWVyLgorICAgICAgICBy
ZXN1bHQgJj0gMHg3ZmZmZmZmZjsKKworICAgICAgICAvLyBUaGlzIGF2b2lkcyBldmVyIHJldHVy
bmluZyBhIGhhc2ggY29kZSBvZiAwLCBzaW5jZSB0aGF0IGlzIHVzZWQgdG8KKyAgICAgICAgLy8g
c2lnbmFsICJoYXNoIG5vdCBjb21wdXRlZCB5ZXQiLCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgbGlr
ZWx5IHRvIGJlCisgICAgICAgIC8vIGVmZmVjdGl2ZWx5IHRoZSBzYW1lIGFzIDAgd2hlbiB0aGUg
bG93IGJpdHMgYXJlIG1hc2tlZC4KKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBy
ZXR1cm4gMHg0MDAwMDAwMDsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7
CisgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CisgICAgICAgIGJvb2wgcmVtID0gbGVuZ3Ro
ICYgMTsKKyAgICAgICAgbGVuZ3RoID4+PSAxOworCisgICAgICAgIHdoaWxlIChsZW5ndGgtLSkg
eworICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoQ29udmVydGVyKGRhdGFbMF0pLCBD
b252ZXJ0ZXIoZGF0YVsxXSkpOworICAgICAgICAgICAgZGF0YSArPSAyOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHJlbSkKKyAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoQ29udmVy
dGVyKCpkYXRhKSk7CisKKyAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGNyZWF0ZUhhc2goY29uc3QgVCogZGF0YSkKKyAgICB7CisgICAgICAgIFN0cmlu
Z0hhc2hlciBoYXNoZXI7CisKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIFVD
aGFyIGIwID0gQ29udmVydGVyKCpkYXRhKyspOworICAgICAgICAgICAgaWYgKCFiMCkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFVDaGFyIGIxID0gQ29udmVydGVyKCpkYXRh
KyspOworICAgICAgICAgICAgaWYgKCFiMSkgeworICAgICAgICAgICAgICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXIoYjApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhiMCwgYjEpOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjcmVhdGVIYXNoKGNvbnN0IFQqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGVIYXNoPFQsIGRlZmF1
bHRDb3ZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNyZWF0ZUhhc2goY29uc3QgVCogZGF0YSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBjcmVhdGVIYXNoPFQsIGRlZmF1bHRDb3ZlcnRlcj4oZGF0YSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4gc3RhdGljIGlubGluZSB1bnNp
Z25lZCBjcmVhdGVCbG9iSGFzaChjb25zdCB2b2lkKiBkYXRhKQorICAgIHsKKyAgICAgICAgQ09N
UElMRV9BU1NFUlQoIShsZW5ndGggJSA0KSwgbGVuZ3RoX211c3RfYmVfYV9tdWx0aWJsZV9vZl9m
b3VyKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUhhc2g8VUNoYXI+KHN0YXRpY19jYXN0PGNvbnN0
IFVDaGFyKj4oZGF0YSksIGxlbmd0aCAvIHNpemVvZihVQ2hhcikpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgaW5saW5lIFVDaGFyIGRlZmF1bHRDb3ZlcnRlcihVQ2hhciBjaCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBjaDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW5saW5lIFVDaGFy
IGRlZmF1bHRDb3ZlcnRlcihjaGFyIGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBhZGRDaGFy
YWN0ZXJzVG9IYXNoKFVDaGFyIGEsIFVDaGFyIGIpCisgICAgeworICAgICAgICBtX2hhc2ggKz0g
YTsKKyAgICAgICAgdW5zaWduZWQgdG1wID0gKGIgPDwgMTEpIF4gbV9oYXNoOworICAgICAgICBt
X2hhc2ggPSAobV9oYXNoIDw8IDE2KSBeIHRtcDsKKyAgICAgICAgbV9oYXNoICs9IG1faGFzaCA+
PiAxMTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2hhc2g7CisgICAgYm9vbCBtX2hhc1BlbmRp
bmdDaGFyYWN0ZXI7CisgICAgVUNoYXIgbV9wZW5kaW5nQ2hhcmFjdGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBXVEZfU3RyaW5nSGFzaEZ1bmN0aW9uc19oCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nSGFzaGVyLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvU3RyaW5nSGFzaGVyLmgJKHJldmlzaW9uIDY5MDA5KQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL1N0cmluZ0hhc2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4
IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqCiAgKi8KLSNpZm5kZWYgV1RG
X1N0cmluZ0hhc2hGdW5jdGlvbnNfaAotI2RlZmluZSBXVEZfU3RyaW5nSGFzaEZ1bmN0aW9uc19o
CisjaWZuZGVmIFdURl9TdHJpbmdIYXNoZXJfaAorI2RlZmluZSBXVEZfU3RyaW5nSGFzaGVyX2gK
IAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIApAQCAtMTY3LDQgKzE2Nyw0IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0jZW5kaWYgLy8gV1RGX1N0cmluZ0hh
c2hGdW5jdGlvbnNfaAorI2VuZGlmIC8vIFdURl9TdHJpbmdIYXNoZXJfaApJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSGFzaC5oCShyZXZpc2lvbiA2OTAwOSkKKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0hhc2guaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2luY2x1ZGUgIldURlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nSGFzaEZ1bmN0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdIYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9Vbmljb2RlLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA2OTAwOSkKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL093bkZhc3RNYWxsb2NQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0hhc2hG
dW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGxCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9n
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTAw
OSkKKysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDEwLTEwLTA1ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFt
ZSBTdHJpbmdIYXNoZXJGdW5jdGlvbnMuaCB0byBTdHJpbmdIYXNoZXIuaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMDAKKworICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmg6IFJlbW92ZWQuCisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hlci5oOiBDb3BpZWQgZnJvbSBK
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaEZ1bmN0aW9ucy5o
LgorCiAyMDEwLTA5LTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpJbmRleDogSmF2YVNjcmlwdEds
dWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNoRnVu
Y3Rpb25zLmgJKHJldmlzaW9uIDY5MDA5KQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCww
IEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFzaEZ1bmN0aW9ucy5oPgpJbmRl
eDogSmF2YVNjcmlwdEdsdWVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXFN0cmluZ0hhc2hlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlxTdHJpbmdI
YXNoZXIuaAkocmV2aXNpb24gNjkwMDkpCShmcm9tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9TdHJpbmdIYXNoRnVuY3Rpb25zLmg6NjkwMDkpCisrKyBKYXZhU2NyaXB0R2x1
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0hhc2hGdW5jdGlvbnMu
aD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNo
ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9TdHJpbmdIYXNoZXIuaAkocmV2aXNpb24gNjkwMDkpCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEg
QEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdIYXNoRnVuY3Rpb25zLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFzaGVyLmg+CkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTAwOSkK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTAtMTAtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFN0cmluZ0hh
c2hlckZ1bmN0aW9ucy5oIHRvIFN0cmluZ0hhc2hlci5oCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIwMAorCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmg6IENvcGllZCBmcm9tIFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaC4KKwogMjAxMC0wOS0yOCAg
THVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hGdW5jdGlvbnMuaAkocmV2
aXNpb24gNjkwMDkpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9TdHJpbmdIYXNo
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNv
cmVfRldEX1N0cmluZ0hhc2hGdW5jdGlvbnNfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdI
YXNoRnVuY3Rpb25zX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdIYXNoRnVuY3Rp
b25zLmg+Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXFN0cmlu
Z0hhc2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXFN0
cmluZ0hhc2hlci5oCShyZXZpc2lvbiA2OTAwOSkJKGZyb20gV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvU3RyaW5nSGFzaEZ1bmN0aW9ucy5oOjY5MDA5KQorKysgV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1N0cmluZ0hhc2hGdW5jdGlvbnNfaAorI2RlZmluZSBX
ZWJDb3JlX0ZXRF9TdHJpbmdIYXNoRnVuY3Rpb25zX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TdHJpbmdIYXNoRnVuY3Rpb25zLmg+CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1N0cmluZ0hhc2hlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmgJKHJldmlzaW9uIDY5MDA5KQorKysgV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RyaW5nSGFzaGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw0IEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1N0cmluZ0hhc2hGdW5jdGlvbnNf
aAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdIYXNoRnVuY3Rpb25zX2gKLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TdHJpbmdIYXNoRnVuY3Rpb25zLmg+CisjaWZuZGVmIFdlYkNvcmVfRldE
X1N0cmluZ0hhc2hlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0hhc2hlcl9oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvU3RyaW5nSGFzaGVyLmg+CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>