<?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>29088</bug_id>
          
          <creation_ts>2009-09-09 08:25:39 -0700</creation_ts>
          <short_desc>Methods in TemporaryLinkStubs could be moved into their correct files</short_desc>
          <delta_ts>2009-09-09 10:36:21 -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>WebKit wx</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kevin Watters">kevinwatters</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kevino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>145769</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin Watters">kevinwatters</who>
    <bug_when>2009-09-09 08:25:39 -0700</bug_when>
    <thetext>As the wx port has been coming together, we have inconsistently been putting stubs in TemporaryLinkStubs.cpp, and others in the files where they belong. Now that the number of incomplete functions is getting lower, we should move the functions out to where they will be eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145770</commentid>
    <comment_count>1</comment_count>
      <attachid>39269</attachid>
    <who name="Kevin Watters">kevinwatters</who>
    <bug_when>2009-09-09 08:27:41 -0700</bug_when>
    <thetext>Created attachment 39269
moves functions out of TemporaryLinkStubs.cpp into their correct files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145828</commentid>
    <comment_count>2</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2009-09-09 10:36:21 -0700</bug_when>
    <thetext>Landed in r48213, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39269</attachid>
            <date>2009-09-09 08:27:41 -0700</date>
            <delta_ts>2009-09-09 08:40:06 -0700</delta_ts>
            <desc>moves functions out of TemporaryLinkStubs.cpp into their correct files</desc>
            <filename>goodbye_tls.patch</filename>
            <type>text/plain</type>
            <size>28222</size>
            <attacher name="Kevin Watters">kevinwatters</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy93eC9FZGl0b3JXeC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL3d4L0VkaXRvcld4LmNwcAkocmV2aXNpb24gNDgxOTYpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvd3gvRWRpdG9yV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAKICNpbmNsdWRlICJDbGlwYm9hcmRXeC5oIgorI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsNCAr
MzYsMTkgQEAKICAgICByZXR1cm4gQ2xpcGJvYXJkV3g6OmNyZWF0ZShwb2xpY3ksIHRydWUpOwog
fQogCit2b2lkIEVkaXRvcjo6c2hvd0NvbG9yUGFuZWwoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CisKK3ZvaWQgRWRpdG9yOjpzaG93Rm9udFBhbmVsKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEVkaXRvcjo6c2hvd1N0eWxlc1BhbmVsKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit9CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyMDEpCisrKyBXZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDA5LTA5LTA4ICBLZXZpbiBX
YXR0ZXJzICA8a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbd3ggcG9ydF0gTW92ZSBmdW5jdGlvbnMgaW4gVGVt
cG9yYXJ5TGlua1N0dWJzLmNwcCBvdXQgdG8gZmlsZXMgd2hlcmUKKyAgICAgICAgdGhleSBiZWxv
bmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MDg4CisKKyAgICAgICAgKiBlZGl0aW5nL3d4L0VkaXRvcld4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6c2hvd0NvbG9yUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpz
aG93Rm9udFBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2hvd1N0eWxlc1BhbmVs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRNaXRlckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphZGRJ
bm5lclJvdW5kZWRSZWN0Q2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSWNv
bld4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJY29uOjp+SWNvbik6CisgICAgICAg
IChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vd3gvQ3Vyc29yV3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bW92ZUN1cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vd3gv
RmlsZUNob29zZXJXeC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6
OmJhc2VuYW1lRm9yV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0tVUkxXeC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6ZmlsZVN5c3RlbVBhdGgpOgorICAgICAgICAq
IHBsYXRmb3JtL3d4L1NTTEtleUdlbmVyYXRvcld4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpnZXRTdXBwb3J0ZWRLZXlTaXplcyk6CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1NlYXJjaFBv
cHVwTWVudVd4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6
OlNlYXJjaFBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OnNh
dmVSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6Omxv
YWRSZWNlbnRTZWFyY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU6OmVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1NoYXJlZEJ1ZmZlcld4LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSk6CisgICAgICAgICogcGxhdGZvcm0vd3gvU3lzdGVtVGltZVd4LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp1c2VySWRsZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1RlbXBv
cmFyeUxpbmtTdHVicy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vd3gvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVVd4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpj
dXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVh
a0xvY2FsZUlEKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9XaWRnZXRXeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXaWRnZXQ6OnNldElzU2VsZWN0ZWQpOgorCiAyMDA5LTA5LTA4ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChC
dWlsZCBmaXgpLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3Bw
CShyZXZpc2lvbiA0ODE5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VX
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9ic2Vy
dmVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtNDUsOSArNDYsNiBAQAogI2lu
Y2x1ZGUgPHd4L2ltYWdlLmg+CiAjaW5jbHVkZSA8d3gvdGhyZWFkLmg+CiAKLS8vIFRoaXMgZnVu
Y3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1WZWN0b3I8Y2hhcj4gbG9hZFJlc291
cmNlSW50b0FycmF5KGNvbnN0IGNoYXIqKTsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyB0
aGlzIGlzIGluIEdyYXBoaWNzQ29udGV4dFd4LmNwcApAQCAtNzIsNyArNzAsOSBAQAogCiBQYXNz
UmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFt
ZSkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gYXJyID0gbG9hZFJlc291cmNlSW50b0FycmF5KG5hbWUp
OworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGhhdmUgc29tZSAncGxhY2Vob2xkZXInIGdyYXBo
aWNzIGZvciB0aGluZ3MgbGlrZSBtaXNzaW5nCisgICAgLy8gcGx1Z2lucyBvciBicm9rZW4gaW1h
Z2VzLgorICAgIFZlY3RvcjxjaGFyPiBhcnI7CiAgICAgUmVmUHRyPEltYWdlPiBpbWcgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYXJyLmRhdGEoKSwgYXJyLnNpemUoKSk7CiAgICAgaW1nLT5zZXRE
YXRhKGJ1ZmZlciwgdHJ1ZSk7CkBAIC0yNjEsNCArMjYxLDkgQEAKIAogfQogCit2b2lkIEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKworfQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93eC9JY29uV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd3gvSWNvbld4LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd3gvSWNvbld4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSWNvbi5oIgorCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitJY29uOjp+SWNvbigpCit7Cit9CisKK1Bhc3NSZWZQdHI8SWNvbj4gSWNvbjo6
Y3JlYXRlSWNvbkZvckZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEljb24+IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSWNvbjo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworfQorCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4
L0dyYXBoaWNzQ29udGV4dFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcAkocmV2aXNpb24gNDgxOTYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTA2LDQgKzUwNiw1OSBAQAogICAgICAgICByZXR1cm47CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhJbnRTaXplIGNvbnN0JixpbnQsQ29sb3Ig
Y29uc3QmKSAKK3sgCisgICAgbm90SW1wbGVtZW50ZWQoKTsgCiB9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGVhclBsYXRmb3JtU2hhZG93KCkgCit7IAorICAgIG5vdEltcGxlbWVudGVkKCk7
IAorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9h
dCkgCit7IAorICAgIG5vdEltcGxlbWVudGVkKCk7IAorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSAKK3sgCisgICAgbm90SW1wbGVtZW50ZWQoKTsgCit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JikgCit7
IAorICAgIG5vdEltcGxlbWVudGVkKCk7IAorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkKK3sgCisgICAgbm90SW1wbGVtZW50ZWQo
KTsgCit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKExpbmVDYXApIAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7IAorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGlu
ZUpvaW4oTGluZUpvaW4pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQoZmxvYXQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5k
ZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvU1NMS2V5
R2VuZXJhdG9yV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gvU1NMS2V5
R2VuZXJhdG9yV3guY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9TU0xL
ZXlHZW5lcmF0b3JXeC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIGdldFN1cHBvcnRlZEtleVNpemVz
KFZlY3RvcjxTdHJpbmc+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcg
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgU3RyaW5nICZjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IEtVUkwgJnVybCkKK3sKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK30KKwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93eC9XaWRn
ZXRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9XaWRnZXRXeC5jcHAJ
KHJldmlzaW9uIDQ4MTk2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9XaWRnZXRXeC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKIAogI2luY2x1ZGUgPHd4L2RlZnMuaD4KICNpbmNsdWRlIDx3eC9z
Y3JvbHdpbi5oPgpAQCAtOTYsNCArOTcsOSBAQAogICAgICAgICB3aWRnZXQtPlVwZGF0ZSgpOwog
fQogCit2b2lkIFdpZGdldDo6c2V0SXNTZWxlY3RlZChib29sKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvU2hhcmVkQnVmZmVyV3gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gvU2hhcmVkQnVmZmVyV3guY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9TaGFyZWRCdWZmZXJXeC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCit9CisKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL3d4L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXeC5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL3d4L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXeC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
b25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQoreworICAgIHJldHVybiAiIjsKK30K
KworY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICByZXR1cm4g
ImVuX3VzIjsKK30KKworfQorCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L1RlbXBvcmFyeUxp
bmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwCShyZXZpc2lvbiA0ODE5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvVGVt
cG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEsIEx0ZC4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8ZmxvYXQuaD4KLQotI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgot
I2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNp
bmNsdWRlICJDbGlwYm9hcmQuaCIKLSNpbmNsdWRlICJDb250ZXh0TWVudS5oIgotI2luY2x1ZGUg
IkNvbnRleHRNZW51SXRlbS5oIgotI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkN1
cnNvci5oIgotI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIK
LSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgi
Ci0jaW5jbHVkZSAiRWRpdG9yLmgiCi0jaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIKLSNpbmNsdWRl
ICJFdmVudEhhbmRsZXIuaCIKLSNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkZv
bnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSWNvbi5oIgotI2luY2x1ZGUgIkljb25EYXRh
YmFzZS5oIgotI2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgot
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkhpc3RvcnkuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlICJsb2FkZXIuaCIK
LSNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZS5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIlNjcmVlbi5oIgotI2luY2x1ZGUgIlNj
cm9sbGJhclRoZW1lLmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCi0jaW5jbHVkZSAi
U2Nyb2xsYmFyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
VGltZXIuaCIKLSNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgotI2luY2x1ZGUgIldpZGdldC5o
IgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotVmVjdG9yPGNoYXI+IGxvYWRSZXNvdXJj
ZUludG9BcnJheShjb25zdCBjaGFyKiByZXNvdXJjZU5hbWUpCi17Ci0gICAgVmVjdG9yPGNoYXI+
IHJlc291cmNlOwotICAgIHJldHVybiByZXNvdXJjZTsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1l
OjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9
Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJ
bnRSZWN0JiByZWN0LCBpbnQgdGhpY2tuZXNzKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLQotLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot
LyogQ29tcGxldGVseSBlbXB0eSBzdHVicyAobW9zdGx5IHRvIGFsbG93IERSVCB0byBydW4pOiAq
LwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLwotc3RhdGljIFdlYkNvcmU6OkN1cnNvciBsb2NhbEN1cnNvcjsKLWNvbnN0IFdlYkNvcmU6
OkN1cnNvciYgV2ViQ29yZTo6bW92ZUN1cnNvcigpIHsgcmV0dXJuIGxvY2FsQ3Vyc29yOyB9Ci0K
LXZvaWQgV2lkZ2V0OjpzZXRJc1NlbGVjdGVkKGJvb2wpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coSW50U2l6ZSBjb25zdCYs
aW50LENvbG9yIGNvbnN0JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkg
eyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIHsgbm90SW1wbGVtZW50ZWQo
KTsgfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVDYXAoTGluZUNhcCkgeyBub3RJbXBs
ZW1lbnRlZCgpOyB9Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4oTGluZUpvaW4p
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGlt
aXQoZmxvYXQpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dEFscGhhKGZsb2F0KSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLQotdm9pZCBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSB7IG5v
dEltcGxlbWVudGVkKCk7IH0gCi0KLVN0cmluZyBGaWxlQ2hvb3Nlcjo6YmFzZW5hbWVGb3JXaWR0
aChjb25zdCBGb250JiwgaW50IHdpZHRoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBTdHJpbmcoKTsgfQotCi1JY29uOjp+SWNvbigpIHsgfQotUGFzc1JlZlB0cjxJY29uPiBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSB7IG5vdEltcGxlbWVu
dGVkKCk7IHJldHVybiAwOyB9Ci1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKSB7IG5vdEltcGxlbWVudGVkKCk7
IHJldHVybiAwOyB9Ci12b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLQotdm9pZCBFZGl0b3I6OnNob3dDb2xvclBh
bmVsKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBFZGl0b3I6OnNob3dTdHlsZXNQYW5lbCgpIHsg
bm90SW1wbGVtZW50ZWQoKTsgfQotCi12b2lkIFNlYXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNl
YXJjaEl0ZW1zKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLXZvaWQgU2VhcmNoUG9wdXBNZW51Ojps
b2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5n
PiYgc2VhcmNoSXRlbXMpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotU2VhcmNoUG9wdXBNZW51OjpT
ZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIDogUG9wdXBNZW51KGNsaWVu
dCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci1ib29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgp
IHsgcmV0dXJuIHRydWU7IH0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotZmxvYXQgdXNlcklkbGVU
aW1lKCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gRkxUX01BWDsgfSAvLyByZXR1cm4gYW4g
YXJiaXRyYXJpbHkgaGlnaCB1c2VySWRsZVRpbWUgc28gdGhhdCByZWxlYXNpbmcgcGFnZXMgZnJv
bSB0aGUgcGFnZSBjYWNoZSBpc24ndCBwb3N0cG9uZWQKLXZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6
ZXMoVmVjdG9yPFN0cmluZz4mKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLVN0cmluZyBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcgJmNoYWxsZW5nZVN0cmluZywgY29uc3QgS1VSTCAmdXJsKSB7IHJldHVybiBTdHJpbmco
KTsgfQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkgeyBub3RJbXBsZW1lbnRl
ZCgpOyByZXR1cm4gIiI7IH0KLWNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgp
IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuICJlbl91cyI7IH0KLQotU3RyaW5nIEtVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7
IH0KLQotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7
IH0KLQotfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93eC9DdXJzb3JXeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9DdXJzb3JXeC5jcHAJKHJldmlzaW9uIDQ4MTk2KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS93eC9DdXJzb3JXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
OCw0ICsyOTgsMTAgQEAKICAgICByZXR1cm4gcG9pbnRlckN1cnNvcigpOwogfQogCitjb25zdCBD
dXJzb3ImIG1vdmVDdXJzb3IoKQoreworICAgIHN0YXRpYyBDdXJzb3IgYyA9IG5ldyB3eEN1cnNv
cih3eENVUlNPUl9TSVpJTkcpOworICAgIHJldHVybiBjOwogfQorCit9CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3d4L1NlYXJjaFBvcHVwTWVudVd4LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vd3gvU2VhcmNoUG9wdXBNZW51V3guY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKKworI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2VhcmNo
UG9wdXBNZW51OjpTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCisgICAg
OiBQb3B1cE1lbnUoY2xpZW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
U2VhcmNoUG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFNlYXJjaFBvcHVwTWVudTo6ZW5hYmxl
ZCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KKwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS93eC9GaWxlQ2hvb3Nlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3d4
L0ZpbGVDaG9vc2VyV3guY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9G
aWxlQ2hvb3Nlcld4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIEZpbGVDaG9vc2VyOjpiYXNlbmFtZUZv
cldpZHRoKGNvbnN0IEZvbnQmLCBpbnQgd2lkdGgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK30KKwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS93eC9TeXN0ZW1UaW1lV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
d3gvU3lzdGVtVGltZVd4LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gv
U3lzdGVtVGltZVd4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgorCisjaW5jbHVkZSA8ZmxvYXQuaD4KKworI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZmxvYXQgdXNl
cklkbGVUaW1lKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIHJldHVybiBhbiBh
cmJpdHJhcmlseSBoaWdoIHVzZXJJZGxlVGltZSBzbyB0aGF0IHJlbGVhc2luZyBwYWdlcyBmcm9t
IHRoZSBwYWdlIGNhY2hlIGlzbid0IHBvc3Rwb25lZAorICAgIHJldHVybiBGTFRfTUFYOworfQor
Cit9CisKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvS1VSTFd4LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL3d4L0tVUkxXeC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL3d4L0tVUkxXeC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworfQorCg==
</data>
<flag name="review"
          id="20335"
          type_id="1"
          status="+"
          setter="kevino"
    />
    <flag name="commit-queue"
          id="20337"
          type_id="3"
          status="-"
          setter="kevino"
    />
          </attachment>
      

    </bug>

</bugzilla>