<?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>37740</bug_id>
          
          <creation_ts>2010-04-16 17:51:16 -0700</creation_ts>
          <short_desc>Web Inspector: move JavaScriptCallFrame to bindings</short_desc>
          <delta_ts>2010-04-17 11:42:23 -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 Inspector (Deprecated)</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>
          
          <blocked>37663</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213537</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-16 17:51:16 -0700</bug_when>
    <thetext>We need to move WebCore/inspector/JavaScriptCallFrame.{h,cpp} to the bindings layer to allow VM-specific implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213540</commentid>
    <comment_count>1</comment_count>
      <attachid>53586</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-16 17:55:06 -0700</bug_when>
    <thetext>Created attachment 53586
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213541</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 17:59:03 -0700</bug_when>
    <thetext>Attachment 53586 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebCore/bindings/js/JavaScriptCallFrame.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/js/JavaScriptCallFrame.h:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WARNING: Skipping non-existent file: WebCore/inspector/JavaScriptCallFrame.cpp
WARNING: Skipping non-existent file: WebCore/inspector/JavaScriptCallFrame.h
WebCore/bindings/js/JavaScriptCallFrame.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
WebCore/bindings/js/JavaScriptCallFrame.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213542</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-16 18:01:04 -0700</bug_when>
    <thetext>Attachment 53586 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/1658446</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213543</commentid>
    <comment_count>4</comment_count>
      <attachid>53586</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-16 18:01:20 -0700</bug_when>
    <thetext>Comment on attachment 53586
patch

1) Remove tab characters?
2) xproj file seems to be wrong

r- for project file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213630</commentid>
    <comment_count>5</comment_count>
      <attachid>53600</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-17 11:25:07 -0700</bug_when>
    <thetext>Created attachment 53600
patch

Addressed the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213635</commentid>
    <comment_count>6</comment_count>
      <attachid>53600</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-17 11:42:17 -0700</bug_when>
    <thetext>Comment on attachment 53600
patch

Clearing flags on attachment: 53600

Committed r57784: &lt;http://trac.webkit.org/changeset/57784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213636</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-17 11:42:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53586</attachid>
            <date>2010-04-16 17:55:06 -0700</date>
            <delta_ts>2010-04-17 11:25:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>move-call-frame.patch</filename>
            <type>text/plain</type>
            <size>25257</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2VkNTE3MC4uNzcxNGY3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNC0xNiAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEphdmFTY3JpcHRDYWxsRnJh
bWUue2gsY3BwfSB0byBXZWJDb3JlL2JpbmRpbmdzL2pzCisKKwlodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDAKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cDogUmVuYW1lZCBmcm9tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6SmF2YVNjcmlwdENhbGxG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjYWxsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbik6CisgICAg
ICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpkeW5hbWljR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0eXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnRoaXNPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0phdmFTY3JpcHRDYWxsRnJhbWUuaDogUmVuYW1lZCBmcm9tIFdlYkNvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHRDYWxsRnJhbWUuaC4KKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJh
bWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OmlzVmFsaWQp
OgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6c291cmNlSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6bGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjp1cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorCiAyMDEwLTA0LTE2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGFybSBidWlsZCBmaXgpLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggYTJiYWQ0Ny4uNDNkYTkzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zOTAsNyArMzkwLDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBcCi0gIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAorICAgICAgICBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NRm9ybURhdGFDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXApAQCAtNDkwLDYgKzQ5
MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJv
Y2Vzc29yQ29uc3RydWN0b3IuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3JDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEFycmF5
LmNwcCBcCkBAIC0xMjczLDggKzEyNzUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIFwKIAlXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldvcmtlclJlc291cmNlLmggXAotCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxs
RnJhbWUuY3BwIFwKLQlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAog
CVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRHQ0V2
ZW50TGlzdGVuZXIuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDM0ZmQ1YjIuLmJkM2E1ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MzksNiArNjM5
LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rv
ci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVj
dG9yLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9T
Y3JpcHRBcnJheS5jcHAnLApAQCAtMTY2MSw4ICsxNjYzLDYgQEAKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJSZXNvdXJjZS5oJywKLSAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBiMTRlNTUwLi4xNTA4ZTEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTEwNzcsNiArMTA3Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGJpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29u
c3RydWN0b3IuaCBcCisgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKICAg
ICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0
QXJyYXkuaCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggXApAQCAt
MTQzOCw3ICsxNDM5LDYgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBcCi0gICAgaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5o
IFwKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggXAogICAgIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBcCkBAIC0yNzMxLDcgKzI3MzEsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUj0xKSB7CiAgICAgU09V
UkNFUyArPSBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3Rv
bS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5jcHAgXAotICAgICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9q
cy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM9MSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggNWQxY2Y0Ny4uN2ExYmNkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC00MzI4NCwxNCArNDMyODQsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdENhbGxGcmFtZS5oIg0KLQkJCQk+DQotCQkJ
PC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlw
dEJyZWFrcG9pbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc0NGNjNzcuLjIwNWU0NjMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01OTQ1LDggKzU5NDUsOCBAQAog
CQkxQzgxQjk1NzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTkw
RTk3MzMwODAwMjY2RTA3IC8qIGZyb250LWVuZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9ICJmcm9udC1lbmQiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM4
MUJBMDQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKYXZh
U2NyaXB0Q2FsbEZyYW1lLmNwcDsgcGF0aCA9IC4uLy4uL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM4MUJBMDQwRTk3MzQ4
MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBwYXRoID0gLi4vLi4vaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4
MUJBMDUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyogRXZl
bnRMb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZl
bnRMb29wTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA4NDAsOCArMTA4
NDAsNiBAQAogCQkJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcCAqLywKIAkJCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oICovLAogCQkJCUYzNzVDQzA2MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNw
ZWN0b3JXb3JrZXJSZXNvdXJjZS5oICovLAotCQkJCTFDODFCQTAzMEU5NzM0ODMwMDI2NkUwNyAv
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKLQkJCQkxQzgxQkEwNDBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJCTFDODFCQTA1MEU5NzM0ODMwMDI2
NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRF
MDA4MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKIAkJCQk3QUZENEE4QTExMzFDMjc2
MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLApAQCAtMTQ4OTIsNiArMTQ4OTAsOCBA
QAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNlLmgg
Ki8sCiAJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5jcHAgKi8sCiAJCQkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5oICovLAorCQkJCTFDODFCQTAzMEU5NzM0ODMwMDI2NkUwNyAv
KiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLywKKwkJCQkxQzgxQkEwNDBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3
OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3
OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk3QTFFODhGMzEwMUNDMzg0MDAwQzRE
RjUgLyogU2NyaXB0QXJyYXkuY3BwICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCmluZGV4IDAyMTIwMzQuLjJlMDUzNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTEzNSw2ICsxMzUsNyBAQAogI2luY2x1ZGUg
IkpTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTWFNMVFByb2Nl
c3NvckNvbnN0cnVjdG9yLmNwcCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3Bw
IgorI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIgogI2luY2x1ZGUgIlNjaGVkdWxl
ZEFjdGlvbi5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuY3BwIgogI2luY2x1ZGUgIlNjcmlw
dENhY2hlZEZyYW1lRGF0YS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTdlOGE4Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisKKyNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikgJiYgVVNFKEpTQykKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDxydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0phdmFTY3JpcHRDYWxsRnJhbWU6OkphdmFTY3Jp
cHRDYWxsRnJhbWUoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBQ
YXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lKQorICAgIDogbV9kZWJ1Z2dlckNhbGxGcmFtZShkZWJ1Z2dlckNhbGxGcmFtZSkK
KyAgICAsIG1fY2FsbGVyKGNhbGxlcikKKyAgICAsIG1fc291cmNlSUQoc291cmNlSUQpCisgICAg
LCBtX2xpbmUobGluZSkKKyAgICAsIG1faXNWYWxpZCh0cnVlKQoreworfQorCitKYXZhU2NyaXB0
Q2FsbEZyYW1lKiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjYWxsZXIoKQoreworICAgIHJldHVybiBt
X2NhbGxlci5nZXQoKTsKK30KKworY29uc3QgSlNDOjpTY29wZUNoYWluTm9kZSogSmF2YVNjcmlw
dENhbGxGcmFtZTo6c2NvcGVDaGFpbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNWYWxpZCk7
CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2Rl
YnVnZ2VyQ2FsbEZyYW1lLnNjb3BlQ2hhaW4oKTsKK30KKworSlNDOjpKU0dsb2JhbE9iamVjdCog
SmF2YVNjcmlwdENhbGxGcmFtZTo6ZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1faXNWYWxpZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKTsK
K30KKworU3RyaW5nIEphdmFTY3JpcHRDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1faXNWYWxpZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICBVU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IG1fZGVidWdnZXJDYWxs
RnJhbWUuY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpOworICAgIGlmIChmdW5jdGlvbk5hbWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHVzdHJpbmdUb1N0
cmluZyhmdW5jdGlvbk5hbWUpOworfQorCitEZWJ1Z2dlckNhbGxGcmFtZTo6VHlwZSBKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjp0eXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pc1ZhbGlkKTsKKyAg
ICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIERlYnVnZ2VyQ2FsbEZyYW1lOjpQcm9n
cmFtVHlwZTsKKyAgICByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS50eXBlKCk7Cit9CisKK0pT
T2JqZWN0KiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9pc1ZhbGlkKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUudGhpc09iamVjdCgpOworfQorCisvLyBF
dmFsdWF0ZSBzb21lIEphdmFTY3JpcHQgY29kZSBpbiB0aGUgc2NvcGUgb2YgdGhpcyBmcmFtZS4K
K0pTVmFsdWUgSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgVVN0cmluZyYgc2Ny
aXB0LCBKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNWYWxpZCk7
CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgcmV0dXJuIG1fZGVidWdnZXJD
YWxsRnJhbWUuZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRpb24pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYmY2MWM0YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFTY3JpcHRDYWxs
RnJhbWVfaAorI2RlZmluZSBKYXZhU2NyaXB0Q2FsbEZyYW1lX2gKKworI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKSAmJiBVU0UoSlNDKQorCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFN0cmluZzsKKworICAgIGNsYXNzIEphdmFT
Y3JpcHRDYWxsRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxKYXZhU2NyaXB0Q2FsbEZyYW1lPiB7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZy
YW1lPiBjcmVhdGUoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY2FsbGVyLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSmF2YVNjcmlwdENhbGxGcmFtZShkZWJ1Z2dlckNhbGxGcmFtZSwgY2FsbGVyLCBzb3VyY2VJ
RCwgbGluZSkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICBtX2RlYnVn
Z2VyQ2FsbEZyYW1lID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQorCisgICAgICAgIEphdmFTY3JpcHRDYWxsRnJhbWUq
IGNhbGxlcigpOworCisgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VJRDsgfQorICAgICAgICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZTsg
fQorICAgICAgICB2b2lkIHVwZGF0ZShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1
Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2RlYnVnZ2VyQ2FsbEZyYW1lID0gZGVidWdnZXJDYWxsRnJhbWU7CisgICAg
ICAgICAgICBtX2xpbmUgPSBsaW5lOworICAgICAgICAgICAgbV9zb3VyY2VJRCA9IHNvdXJjZUlE
OworICAgICAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFN0
cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICAgICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZTo6VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEpTQzo6U2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW4oKSBjb25zdDsKKyAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1p
Y0dsb2JhbE9iamVjdCgpIGNvbnN0OworCisgICAgICAgIEpTQzo6SlNPYmplY3QqIHRoaXNPYmpl
Y3QoKSBjb25zdDsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IEpTQzo6VVN0
cmluZyYgc2NyaXB0LCBKU0M6OkpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3Q7CisgICAgICAgIAor
ICAgIHByaXZhdGU6CisgICAgICAgIEphdmFTY3JpcHRDYWxsRnJhbWUoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY2FsbGVyLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmUpOworCisgICAgICAgIEpTQzo6RGVidWdnZXJDYWxs
RnJhbWUgbV9kZWJ1Z2dlckNhbGxGcmFtZTsKKyAgICAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxs
RnJhbWU+IG1fY2FsbGVyOworICAgICAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOworICAgICAgICBp
bnQgbV9saW5lOworICAgICAgICBib29sIG1faXNWYWxpZDsKKyAgICB9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKwor
I2VuZGlmIC8vIEphdmFTY3JpcHRDYWxsRnJhbWVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaAppbmRleCBjNDIzZDVjLi5iZWZmYzlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBEYXRhYmFzZTsKIGNsYXNz
IEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZDsKLWNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBOb2RlOwogY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgU3RvcmFnZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmNDdjMDQ0Li4zYzY3OTc1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIElu
c3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwotY2xhc3MgSmF2
YVNjcmlwdENhbGxGcmFtZTsKIGNsYXNzIEtVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDYxN2U4YTguLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpT
QykKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8ZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KLSNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKLUphdmFTY3JpcHRDYWxsRnJhbWU6OkphdmFTY3JpcHRDYWxsRnJhbWUoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBQYXNzUmVmUHRyPEphdmFTY3JpcHRDYWxs
RnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lKQotICAgIDogbV9kZWJ1
Z2dlckNhbGxGcmFtZShkZWJ1Z2dlckNhbGxGcmFtZSkKLSAgICAsIG1fY2FsbGVyKGNhbGxlcikK
LSAgICAsIG1fc291cmNlSUQoc291cmNlSUQpCi0gICAgLCBtX2xpbmUobGluZSkKLSAgICAsIG1f
aXNWYWxpZCh0cnVlKQotewotfQotCi1KYXZhU2NyaXB0Q2FsbEZyYW1lKiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpjYWxsZXIoKQotewotICAgIHJldHVybiBtX2NhbGxlci5nZXQoKTsKLX0KLQotY29u
c3QgSlNDOjpTY29wZUNoYWluTm9kZSogSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbigp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLnNjb3BlQ2hh
aW4oKTsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogSmF2YVNjcmlwdENhbGxGcmFtZTo6ZHlu
YW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0gICAg
aWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2RlYnVnZ2Vy
Q2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLX0KLQotU3RyaW5nIEphdmFTY3JpcHRD
YWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNWYWxpZCk7
Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBVU3Ry
aW5nIGZ1bmN0aW9uTmFtZSA9IG1fZGVidWdnZXJDYWxsRnJhbWUuY2FsY3VsYXRlZEZ1bmN0aW9u
TmFtZSgpOwotICAgIGlmIChmdW5jdGlvbk5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhmdW5jdGlvbk5hbWUpOwotfQot
Ci1EZWJ1Z2dlckNhbGxGcmFtZTo6VHlwZSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0eXBlKCkgY29u
c3QKLXsKLSAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAg
ICAgcmV0dXJuIERlYnVnZ2VyQ2FsbEZyYW1lOjpQcm9ncmFtVHlwZTsKLSAgICByZXR1cm4gbV9k
ZWJ1Z2dlckNhbGxGcmFtZS50eXBlKCk7Ci19Ci0KLUpTT2JqZWN0KiBKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp0aGlzT2JqZWN0KCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICBp
ZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZGVidWdnZXJD
YWxsRnJhbWUudGhpc09iamVjdCgpOwotfQotCi0vLyBFdmFsdWF0ZSBzb21lIEphdmFTY3JpcHQg
Y29kZSBpbiB0aGUgc2NvcGUgb2YgdGhpcyBmcmFtZS4KLUpTVmFsdWUgSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24p
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybiBqc051bGwoKTsKLQotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7Ci0gICAgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGUoc2NyaXB0
LCBleGNlcHRpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxs
RnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY2MWM0Yi4uMDAwMDAwMAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBKYXZhU2NyaXB0Q2FsbEZyYW1lX2gKLSNkZWZpbmUgSmF2YVNjcmlw
dENhbGxGcmFtZV9oCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgVVNFKEpT
QykKLQotI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDxkZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBj
bGFzcyBTdHJpbmc7Ci0KLSAgICBjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVibGljIFJl
ZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxGcmFtZT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gY3JlYXRlKGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBQYXNzUmVmUHRyPEphdmFTY3JpcHRD
YWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEphdmFTY3JpcHRDYWxsRnJhbWUoZGVi
dWdnZXJDYWxsRnJhbWUsIGNhbGxlciwgc291cmNlSUQsIGxpbmUpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1faXNWYWxp
ZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9kZWJ1Z2dlckNhbGxGcmFtZSA9IDA7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0K
LQotICAgICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsZXIoKTsKLQotICAgICAgICBpbnRw
dHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0KLSAgICAgICAgaW50
IGxpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmU7IH0KLSAgICAgICAgdm9pZCB1cGRhdGUoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZSkKLSAgICAgICAgewotICAgICAgICAgICAgbV9kZWJ1Z2dlckNhbGxG
cmFtZSA9IGRlYnVnZ2VyQ2FsbEZyYW1lOwotICAgICAgICAgICAgbV9saW5lID0gbGluZTsKLSAg
ICAgICAgICAgIG1fc291cmNlSUQgPSBzb3VyY2VJRDsKLSAgICAgICAgICAgIG1faXNWYWxpZCA9
IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lKCkgY29uc3Q7
Ci0gICAgICAgIEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgdHlwZSgpIGNvbnN0OwotICAg
ICAgICBjb25zdCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3Q7Ci0gICAg
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdDsKLQot
ICAgICAgICBKU0M6OkpTT2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7Ci0gICAgICAgIEpTQzo6
SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBKU0M6OlVTdHJpbmcmIHNjcmlwdCwgSlNDOjpKU1ZhbHVl
JiBleGNlcHRpb24pIGNvbnN0OwotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBKYXZh
U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBQYXNzUmVmUHRy
PEphdmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
KTsKLQotICAgICAgICBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lIG1fZGVidWdnZXJDYWxsRnJhbWU7
Ci0gICAgICAgIFJlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBtX2NhbGxlcjsKLSAgICAgICAg
aW50cHRyX3QgbV9zb3VyY2VJRDsKLSAgICAgICAgaW50IG1fbGluZTsKLSAgICAgICAgYm9vbCBt
X2lzVmFsaWQ7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0KLSNlbmRpZiAvLyBKYXZhU2NyaXB0Q2FsbEZy
YW1lX2gK
</data>
<flag name="review"
          id="37352"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53600</attachid>
            <date>2010-04-17 11:25:07 -0700</date>
            <delta_ts>2010-04-17 11:42:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>move-call-frame2.patch</filename>
            <type>text/plain</type>
            <size>23098</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODc0ZmRmMC4uOTUyYjg0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wNC0xNyAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIEphdmFTY3JpcHRDYWxsRnJh
bWUue2gsY3BwfSB0byBXZWJDb3JlL2JpbmRpbmdzL2pzCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQwCisKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OkphdmFTY3Jp
cHRDYWxsRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6Y2Fs
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW4p
OgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6ZHluYW1pY0dsb2JhbE9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpmdW5jdGlvbk5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6dHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6IFJlbmFtZWQgZnJvbSBXZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmguCisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0
Q2FsbEZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFt
ZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpp
c1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnNvdXJjZUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OmxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6dXBkYXRlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaDoKKwogMjAxMC0wNC0xNyAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxp
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggYWE1NmE1Yi4uYjM1YWJjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zOTAsNyArMzkwLDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBcCi0gIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01Gb3Jt
RGF0YUN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCkBAIC00OTAsNiArNDkwLDggQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nv
ckNvbnN0cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JD
b25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3Rv
bS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgXAor
CVdlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QXJyYXkuY3BwIFwK
QEAgLTEyNzUsOCArMTI3Nyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyUmVzb3VyY2UuaCBcCi0JV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgXAotCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBcCiAJV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHREZWJ1Z0xpc3RlbmVyLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEdDRXZlbnRMaXN0
ZW5lci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggYTBhZTY5ZC4uZmI4ODg3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzOSw2ICs2MzksOCBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAnLAorICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL1NjcmlwdEFy
cmF5LmNwcCcsCkBAIC0xNjYzLDggKzE2NjUsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlclJlc291cmNlLmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGE4MGE2Y2EuLjdjNjZlNjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
MTA3OCw2ICsxMDc4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0RXJyb3JIYW5kbGVyLmggXAogICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3Rvci5oIFwKICAgICBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rv
ci5oIFwKKyAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAogICAgIGJpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oIFwKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRBcnJheS5o
IFwKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCkBAIC0xNDQwLDcg
KzE0NDEsNiBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIFwKLSAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdENh
bGxGcmFtZS5oIFwKICAgICBpbnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmggXAogICAg
IGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCiAgICAgbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIFwKQEAgLTI3MzMsNyArMjczMyw3IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSPTEpIHsKICAgICBTT1VSQ0VTICs9
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmNwcCBcCi0gICAgICAgIGluc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwIFwKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX09GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUz0xKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBjYTg1MzQ2Li41Y2Q0MTg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTQzMjkyLDE0ICs0MzI5Miw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+
DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0QnJlYWtw
b2ludC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzdlOWU3ZS4uOGFlZTgwNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwODQ0LDggKzEwODQ0LDYgQEAKIAkJCQk3
NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi8s
CiAJCQkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQu
aCAqLywKIAkJCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVz
b3VyY2UuaCAqLywKLQkJCQkxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgKi8sCi0JCQkJMUM4MUJBMDQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCAqLywKIAkJCQkxQzgxQkEwNTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5pZGwgKi8sCiAJCQkJQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxv
Y2FsaXplZFN0cmluZ3MuanMgKi8sCiAJCQkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNj
cmlwdEJyZWFrcG9pbnQuaCAqLywKQEAgLTE0ODk2LDYgKzE0ODk0LDggQEAKIAkJCQlFMUMzNkQz
MzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5oICovLAogCQkJCUYzRDQ2
MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICov
LAogCQkJCUYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU1dvcmtlckNvbnRleHRFcnJvckhh
bmRsZXIuaCAqLywKKwkJCQkxQzgxQkEwMzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHAgKi8sCisJCQkJMUM4MUJBMDQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3Jp
cHRDYWxsRnJhbWUuaCAqLywKIAkJCQlCQ0EzNzhCQTBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1
bGVkQWN0aW9uLmNwcCAqLywKIAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1
bGVkQWN0aW9uLmggKi8sCiAJCQkJN0ExRTg4RjMxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFy
cmF5LmNwcCAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApp
bmRleCAwMjEyMDM0Li4yZTA1MzUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCkBAIC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1
ZXN0VXBsb2FkQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rv
ci5jcHAiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJK
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uY3BwIgog
I2luY2x1ZGUgIlNjcmlwdEFycmF5LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI4MGQ5OAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTAsMCAr
MSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5oIgorCisj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgVVNFKEpTQykKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0NvbXBsZXRp
b24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICAKK0phdmFTY3JpcHRDYWxsRnJhbWU6OkphdmFTY3JpcHRDYWxsRnJhbWUo
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBQYXNzUmVmUHRyPEph
dmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lKQor
ICAgIDogbV9kZWJ1Z2dlckNhbGxGcmFtZShkZWJ1Z2dlckNhbGxGcmFtZSkKKyAgICAsIG1fY2Fs
bGVyKGNhbGxlcikKKyAgICAsIG1fc291cmNlSUQoc291cmNlSUQpCisgICAgLCBtX2xpbmUobGlu
ZSkKKyAgICAsIG1faXNWYWxpZCh0cnVlKQoreworfQorCitKYXZhU2NyaXB0Q2FsbEZyYW1lKiBK
YXZhU2NyaXB0Q2FsbEZyYW1lOjpjYWxsZXIoKQoreworICAgIHJldHVybiBtX2NhbGxlci5nZXQo
KTsKK30KKworY29uc3QgSlNDOjpTY29wZUNoYWluTm9kZSogSmF2YVNjcmlwdENhbGxGcmFtZTo6
c2NvcGVDaGFpbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNWYWxpZCk7CisgICAgaWYgKCFt
X2lzVmFsaWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZy
YW1lLnNjb3BlQ2hhaW4oKTsKK30KKworSlNDOjpKU0dsb2JhbE9iamVjdCogSmF2YVNjcmlwdENh
bGxGcmFtZTo6ZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNW
YWxpZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKK30KKworU3RyaW5n
IEphdmFTY3JpcHRDYWxsRnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1faXNWYWxpZCk7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICBVU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IG1fZGVidWdnZXJDYWxsRnJhbWUuY2FsY3Vs
YXRlZEZ1bmN0aW9uTmFtZSgpOworICAgIGlmIChmdW5jdGlvbk5hbWUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIHVzdHJpbmdUb1N0cmluZyhmdW5jdGlv
bk5hbWUpOworfQorCitEZWJ1Z2dlckNhbGxGcmFtZTo6VHlwZSBKYXZhU2NyaXB0Q2FsbEZyYW1l
Ojp0eXBlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pc1ZhbGlkKTsKKyAgICBpZiAoIW1faXNW
YWxpZCkKKyAgICAgICAgcmV0dXJuIERlYnVnZ2VyQ2FsbEZyYW1lOjpQcm9ncmFtVHlwZTsKKyAg
ICByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS50eXBlKCk7Cit9CisKK0pTT2JqZWN0KiBKYXZh
U2NyaXB0Q2FsbEZyYW1lOjp0aGlzT2JqZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9pc1Zh
bGlkKTsKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG1fZGVidWdnZXJDYWxsRnJhbWUudGhpc09iamVjdCgpOworfQorCisvLyBFdmFsdWF0ZSBzb21l
IEphdmFTY3JpcHQgY29kZSBpbiB0aGUgc2NvcGUgb2YgdGhpcyBmcmFtZS4KK0pTVmFsdWUgSmF2
YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVl
JiBleGNlcHRpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faXNWYWxpZCk7CisgICAgaWYgKCFt
X2lzVmFsaWQpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUuZXZh
bHVhdGUoc2NyaXB0LCBleGNlcHRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNTc0Yzc4MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFTY3JpcHRDYWxsRnJhbWVfaAorI2Rl
ZmluZSBKYXZhU2NyaXB0Q2FsbEZyYW1lX2gKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKSAmJiBVU0UoSlNDKQorCisjaW5jbHVkZSA8ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
aD4KKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU3RyaW5nOworCitjbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lIDogcHVi
bGljIFJlZkNvdW50ZWQ8SmF2YVNjcmlwdENhbGxGcmFtZT4geworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGNyZWF0ZShjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2Fs
bEZyYW1lPiBjYWxsZXIsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSmF2YVNjcmlwdENhbGxGcmFtZShkZWJ1Z2dlckNhbGxG
cmFtZSwgY2FsbGVyLCBzb3VyY2VJRCwgbGluZSkpOworICAgIH0KKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpCisgICAgeworICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbV9kZWJ1
Z2dlckNhbGxGcmFtZSA9IDA7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1ZhbGlkOyB9CisKKyAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsZXIoKTsK
KworICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRDsgfQor
ICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5lOyB9CisgICAgdm9pZCB1cGRhdGUo
Y29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZSkKKyAgICB7CisgICAgICAgIG1fZGVidWdnZXJDYWxsRnJhbWUg
PSBkZWJ1Z2dlckNhbGxGcmFtZTsKKyAgICAgICAgbV9saW5lID0gbGluZTsKKyAgICAgICAgbV9z
b3VyY2VJRCA9IHNvdXJjZUlEOworICAgICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgIH0KKwor
ICAgIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICBKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lOjpUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBjb25zdCBKU0M6OlNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluKCkgY29uc3Q7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2Jh
bE9iamVjdCgpIGNvbnN0OworCisgICAgSlNDOjpKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0
OworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShjb25zdCBKU0M6OlVTdHJpbmcmIHNjcmlwdCwg
SlNDOjpKU1ZhbHVlJiBleGNlcHRpb24pIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBKYXZh
U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBQYXNzUmVmUHRy
PEphdmFTY3JpcHRDYWxsRnJhbWU+IGNhbGxlciwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
KTsKKworICAgIEpTQzo6RGVidWdnZXJDYWxsRnJhbWUgbV9kZWJ1Z2dlckNhbGxGcmFtZTsKKyAg
ICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jYWxsZXI7CisgICAgaW50cHRyX3QgbV9z
b3VyY2VJRDsKKyAgICBpbnQgbV9saW5lOworICAgIGJvb2wgbV9pc1ZhbGlkOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisKKyNlbmRpZiAvLyBKYXZhU2NyaXB0Q2FsbEZyYW1lX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggYzQyM2Q1Yy4uYmVmZmM5ZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgRGF0YWJhc2U7
CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmQ7Ci1jbGFzcyBKYXZhU2NyaXB0Q2FsbEZyYW1lOwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZjQ3YzA0NC4uM2M2Nzk3NSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNjgsNyArNjgsNiBAQCBj
bGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKLWNs
YXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBLVVJMOwogY2xhc3MgTm9kZTsKIGNsYXNz
IFBhZ2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTdlOGE4Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYm
IFVTRShKU0MpCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPGRlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0dsb2JhbE9iamVj
dC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgotI2luY2x1ZGUgPHJ1bnRpbWUv
SlNMb2NrLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRp
bWUvSlNWYWx1ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgCi1KYXZhU2NyaXB0Q2FsbEZyYW1lOjpKYXZhU2NyaXB0Q2FsbEZyYW1lKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgUGFzc1JlZlB0cjxKYXZhU2Ny
aXB0Q2FsbEZyYW1lPiBjYWxsZXIsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKLSAgICA6
IG1fZGVidWdnZXJDYWxsRnJhbWUoZGVidWdnZXJDYWxsRnJhbWUpCi0gICAgLCBtX2NhbGxlcihj
YWxsZXIpCi0gICAgLCBtX3NvdXJjZUlEKHNvdXJjZUlEKQotICAgICwgbV9saW5lKGxpbmUpCi0g
ICAgLCBtX2lzVmFsaWQodHJ1ZSkKLXsKLX0KLQotSmF2YVNjcmlwdENhbGxGcmFtZSogSmF2YVNj
cmlwdENhbGxGcmFtZTo6Y2FsbGVyKCkKLXsKLSAgICByZXR1cm4gbV9jYWxsZXIuZ2V0KCk7Ci19
Ci0KLWNvbnN0IEpTQzo6U2NvcGVDaGFpbk5vZGUqIEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW4oKSBjb25zdAotewotICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS5z
Y29wZUNoYWluKCk7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIEphdmFTY3JpcHRDYWxsRnJh
bWU6OmR5bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdAotewotICAgIEFTU0VSVChtX2lzVmFsaWQp
OwotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9k
ZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCk7Ci19Ci0KLVN0cmluZyBKYXZh
U2NyaXB0Q2FsbEZyYW1lOjpmdW5jdGlvbk5hbWUoKSBjb25zdAotewotICAgIEFTU0VSVChtX2lz
VmFsaWQpOwotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgVVN0cmluZyBmdW5jdGlvbk5hbWUgPSBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmNhbGN1bGF0ZWRG
dW5jdGlvbk5hbWUoKTsKLSAgICBpZiAoZnVuY3Rpb25OYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiB1c3RyaW5nVG9TdHJpbmcoZnVuY3Rpb25OYW1l
KTsKLX0KLQotRGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgSmF2YVNjcmlwdENhbGxGcmFtZTo6dHlw
ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNWYWxpZCk7Ci0gICAgaWYgKCFtX2lzVmFsaWQp
Ci0gICAgICAgIHJldHVybiBEZWJ1Z2dlckNhbGxGcmFtZTo6UHJvZ3JhbVR5cGU7Ci0gICAgcmV0
dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUudHlwZSgpOwotfQotCi1KU09iamVjdCogSmF2YVNjcmlw
dENhbGxGcmFtZTo6dGhpc09iamVjdCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1faXNWYWxpZCk7
Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2Rl
YnVnZ2VyQ2FsbEZyYW1lLnRoaXNPYmplY3QoKTsKLX0KLQotLy8gRXZhbHVhdGUgc29tZSBKYXZh
U2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCi1KU1ZhbHVlIEphdmFTY3Jp
cHRDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhj
ZXB0aW9uKSBjb25zdAotewotICAgIEFTU0VSVChtX2lzVmFsaWQpOwotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBKU0xvY2sgbG9jayhTaWxlbmNl
QXNzZXJ0aW9uc09ubHkpOwotICAgIHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1YXRl
KHNjcmlwdCwgZXhjZXB0aW9uKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggYi9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNjFjNGIuLjAw
MDAwMDAKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgSmF2YVNjcmlwdENhbGxGcmFtZV9oCi0jZGVmaW5lIEph
dmFTY3JpcHRDYWxsRnJhbWVfaAotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYm
IFVTRShKU0MpCi0KLSNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWUuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0gICAgY2xhc3MgU3RyaW5nOwotCi0gICAgY2xhc3MgSmF2YVNjcmlwdENhbGxGcmFtZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEphdmFTY3JpcHRDYWxsRnJhbWU+IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IGNyZWF0ZShjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgUGFzc1JlZlB0cjxKYXZh
U2NyaXB0Q2FsbEZyYW1lPiBjYWxsZXIsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKYXZhU2NyaXB0Q2FsbEZy
YW1lKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjYWxsZXIsIHNvdXJjZUlELCBsaW5lKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB2b2lkIGludmFsaWRhdGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X2lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1fZGVidWdnZXJDYWxsRnJhbWUgPSAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zh
bGlkOyB9Ci0KLSAgICAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogY2FsbGVyKCk7Ci0KLSAgICAg
ICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEOyB9Ci0gICAg
ICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5lOyB9Ci0gICAgICAgIHZvaWQgdXBk
YXRlKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fZGVidWdn
ZXJDYWxsRnJhbWUgPSBkZWJ1Z2dlckNhbGxGcmFtZTsKLSAgICAgICAgICAgIG1fbGluZSA9IGxp
bmU7Ci0gICAgICAgICAgICBtX3NvdXJjZUlEID0gc291cmNlSUQ7Ci0gICAgICAgICAgICBtX2lz
VmFsaWQgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSgp
IGNvbnN0OwotICAgICAgICBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjpUeXBlIHR5cGUoKSBjb25z
dDsKLSAgICAgICAgY29uc3QgSlNDOjpTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0
OwotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29u
c3Q7Ci0KLSAgICAgICAgSlNDOjpKU09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwotICAgICAg
ICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoY29uc3QgSlNDOjpVU3RyaW5nJiBzY3JpcHQsIEpTQzo6
SlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdDsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgSmF2YVNjcmlwdENhbGxGcmFtZShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgUGFz
c1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBjYWxsZXIsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZSk7Ci0KLSAgICAgICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSBtX2RlYnVnZ2VyQ2Fs
bEZyYW1lOwotICAgICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jYWxsZXI7Ci0g
ICAgICAgIGludHB0cl90IG1fc291cmNlSUQ7Ci0gICAgICAgIGludCBtX2xpbmU7Ci0gICAgICAg
IGJvb2wgbV9pc1ZhbGlkOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotCi0jZW5kaWYgLy8gSmF2YVNjcmlw
dENhbGxGcmFtZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>