<?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>122941</bug_id>
          
          <creation_ts>2013-10-16 21:51:44 -0700</creation_ts>
          <short_desc>Introduce WTF::Bag and start using it for InlineCallFrameSet</short_desc>
          <delta_ts>2013-10-17 08:46:03 -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>JavaScriptCore</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>122940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940647</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-16 21:51:44 -0700</bug_when>
    <thetext>Because SegmentedVector is an abomination and using Vector as an allocation pool is totally insane</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940648</commentid>
    <comment_count>1</comment_count>
      <attachid>214420</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-16 22:24:16 -0700</bug_when>
    <thetext>Created attachment 214420
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940650</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-16 22:26:45 -0700</bug_when>
    <thetext>Attachment 214420 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/InlineCallFrameSet.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/InlineCallFrameSet.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArgumentsSimplificationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGVirtualRegisterAllocationPhase.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/GNUmakefile.list.am&apos;, u&apos;Source/WTF/WTF.vcxproj/WTF.vcxproj&apos;, u&apos;Source/WTF/WTF.xcodeproj/project.pbxproj&apos;, u&apos;Source/WTF/wtf/Bag.h&apos;, u&apos;Source/WTF/wtf/CMakeLists.txt&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/InlineCallFrameSet.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 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>940651</commentid>
    <comment_count>3</comment_count>
      <attachid>214421</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-16 22:37:51 -0700</bug_when>
    <thetext>Created attachment 214421
the patch

Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940664</commentid>
    <comment_count>4</comment_count>
      <attachid>214421</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-17 00:16:03 -0700</bug_when>
    <thetext>Comment on attachment 214421
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940789</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-17 08:46:03 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/157576</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214420</attachid>
            <date>2013-10-16 22:24:16 -0700</date>
            <delta_ts>2013-10-16 22:37:51 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16632</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NTU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDEzLTEwLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIFdURjo6QmFnIGFuZCBzdGFydCB1c2luZyBpdCBmb3IgSW5saW5lQ2FsbEZyYW1l
U2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFVzZSBCYWcgZm9yIElubGluZUNhbGxGcmFtZVNldC4gSWYgdGhpcyB3b3JrcyBvdXQgdGhl
biBJJ2xsIG1ha2Ugb3RoZXIKKyAgICAgICAgU2VnbWVudGVkVmVjdG9ycyBpbnRvIEJhZ3MgYXMg
d2VsbC4KKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZVNldC5jcHA6CisgICAg
ICAgIChKU0M6OklubGluZUNhbGxGcmFtZVNldDo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9J
bmxpbmVDYWxsRnJhbWVTZXQuaDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lU2V0Ojpi
ZWdpbik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZVNldDo6ZW5kKToKKyAgICAgICAg
KiBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5r
KToKKyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWaXJ0dWFsUmVn
aXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisKIDIwMTMtMTAtMTYgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBsaWJsbHZtRm9ySlNDIHNob3VsZG4ndCBjYWxs
IGV4aXQoMSkgb24gcmVwb3J0X2ZhdGFsX2Vycm9yKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuY3BwCShyZXZpc2lv
biAxNTc1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDcgQEAgSW5saW5lQ2FsbEZy
YW1lU2V0Ojp+SW5saW5lQ2FsbEZyYW1lU2V0KAogCiBJbmxpbmVDYWxsRnJhbWUqIElubGluZUNh
bGxGcmFtZVNldDo6YWRkKCkKIHsKLSAgICBtX2ZyYW1lcy5hcHBlbmQoSW5saW5lQ2FsbEZyYW1l
KCkpOwotICAgIHJldHVybiAmbV9mcmFtZXMubGFzdCgpOwotfQotCi12b2lkIElubGluZUNhbGxG
cmFtZVNldDo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fZnJhbWVzLnNocmlua1RvRml0KCk7Cisg
ICAgcmV0dXJuIG1fZnJhbWVzLmFkZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
U2V0LmgJKHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbmxpbmVDYWxsRnJhbWVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
I2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvQmFnLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC00MiwxNSArNDIsMTIgQEAgcHVibGljOgogICAgIAogICAg
IElubGluZUNhbGxGcmFtZSogYWRkKCk7CiAgICAgCi0gICAgLy8gVGhlIG9ubHkgdXNlcnMgb2Yg
dGhlc2UgbWV0aG9kcyBqdXN0IHdhbnQgdG8gaXRlcmF0ZSBhbGwgaW5saW5lIGNhbGwgZnJhbWVz
LgotICAgIC8vIFRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IGZvciByYW5kb20gYWNjZXNzLgotICAg
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lcy5zaXplKCk7IH0KLSAgICBJ
bmxpbmVDYWxsRnJhbWUqIGF0KHVuc2lnbmVkIGkpIHsgcmV0dXJuICZtX2ZyYW1lc1tpXTsgfQot
ICAgIAotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKKyAgICB0eXBlZGVmIEJhZzxJbmxpbmVDYWxs
RnJhbWU+OjppdGVyYXRvciBpdGVyYXRvcjsKKyAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJu
IG1fZnJhbWVzLmJlZ2luKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2ZyYW1l
cy5lbmQoKTsgfQogICAgIAogcHJpdmF0ZToKLSAgICBTZWdtZW50ZWRWZWN0b3I8SW5saW5lQ2Fs
bEZyYW1lLCA0PiBtX2ZyYW1lczsKKyAgICBCYWc8SW5saW5lQ2FsbEZyYW1lPiBtX2ZyYW1lczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAxNTc1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOCArMTIy
LDggQEAgcHVibGljOgogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFJlY29yZCB3aGljaCBhcmd1bWVudHMgYXJlIGtub3duIHRvIGVzY2FwZSBubyBt
YXR0ZXIgd2hhdC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2lubGluZUNh
bGxGcmFtZXMtPnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIHBydW5lT2J2aW91c0FyZ3VtZW50
Q3JlYXRpb25zKG1fZ3JhcGgubV9pbmxpbmVDYWxsRnJhbWVzLT5hdChpKSk7CisgICAgICAgIGZv
ciAoSW5saW5lQ2FsbEZyYW1lU2V0OjppdGVyYXRvciBpdGVyID0gbV9ncmFwaC5tX2lubGluZUNh
bGxGcmFtZXMtPmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKQorICAgICAgICAgICAgcHJ1bmVPYnZp
b3VzQXJndW1lbnRDcmVhdGlvbnMoKml0ZXIpOwogICAgICAgICBwcnVuZU9idmlvdXNBcmd1bWVu
dENyZWF0aW9ucygwKTsgLy8gdGhlIG1hY2hpbmUgY2FsbCBmcmFtZS4KICAgICAgICAgCiAgICAg
ICAgIC8vIENyZWF0ZSBkYXRhIGZvciB2YXJpYWJsZSBhY2Nlc3MgZGF0YXMgdGhhdCB3ZSB3aWxs
IHdhbnQgdG8gYW5hbHl6ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTc1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDEwICsxNTgs
OCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAgICAgZGF0YUxv
Z0YoIkpJVCBjb2RlIGZvciAlcCBzdGFydCBhdCBbJXAsICVwKS4gU2l6ZSA9ICV6dS5cbiIsIG1f
Y29kZUJsb2NrLCBsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4o
bGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpLCBsaW5r
QnVmZmVyLmRlYnVnU2l6ZSgpKTsKICNlbmRpZgogICAgIAotICAgIGlmICghbV9ncmFwaC5tX2lu
bGluZUNhbGxGcmFtZXMtPmlzRW1wdHkoKSkgewotICAgICAgICBtX2dyYXBoLm1faW5saW5lQ2Fs
bEZyYW1lcy0+c2hyaW5rVG9GaXQoKTsKKyAgICBpZiAoIW1fZ3JhcGgubV9pbmxpbmVDYWxsRnJh
bWVzLT5pc0VtcHR5KCkpCiAgICAgICAgIG1faml0Q29kZS0+Y29tbW9uLmlubGluZUNhbGxGcmFt
ZXMgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy5yZWxlYXNlKCk7Ci0gICAgfQogICAgIAog
ICAgIG1faml0Q29kZS0+Y29tbW9uLm1hY2hpbmVDYXB0dXJlU3RhcnQgPSBtX2dyYXBoLm1fbWFj
aGluZUNhcHR1cmVTdGFydDsKICAgICBtX2ppdENvZGUtPmNvbW1vbi5zbG93QXJndW1lbnRzID0g
c3RkOjptb3ZlKG1fZ3JhcGgubV9zbG93QXJndW1lbnRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkocmV2aXNpb24gMTU3
NTU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDggKzEwMiw4IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICBpZiAoY29kZUJsb2NrKCktPnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlcigpLmlz
VmFsaWQoKSkKICAgICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KGNvZGVCbG9jaygpLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKS50b0xvY2FsKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dy
YXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fZ3JhcGgubV9pbmxpbmVDYWxsRnJhbWVz
LT5hdChpKTsKKyAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWVTZXQ6Oml0ZXJhdG9yIGl0ZXIg
PSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gKml0ZXI7CiAg
ICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS0+dXNlc0FyZ3VtZW50
cygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xNjYsOCAr
MTY2LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGFsbG9jYXRpb25bY29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpLnRvTG9jYWwoKV0p
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFw
aC5tX2lubGluZUNhbGxGcmFtZXMtPnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+
YXQoaSk7CisgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lU2V0OjppdGVyYXRvciBpdGVyID0g
bV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7Cisg
ICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9ICppdGVyOwogICAg
ICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUtPnVzZXNBcmd1bWVudHMo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzUmVnaXN0ZXIgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxS
ZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI1LDkgKzEyNSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdGhh
dCBjb3VsZCBiZSB1c2VkIGJ5IHRoaXMgY29kZSBibG9jayBldmVuIGlmIGl0IGV4aXRzOyBpdCBt
YXkgYmUgbW9yZQogICAgICAgICAvLyB0aGFuIHdoYXQgdGhpcyBjb2RlIGJsb2NrIG5lZWRzIGlm
IGl0IG5ldmVyIGV4aXRzLgogICAgICAgICB1bnNpZ25lZCBjYWxsZWVSZWdpc3RlcnMgPSBzY29y
ZUJvYXJkLmhpZ2hXYXRlcm1hcmsoKSArIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90czsKLSAgICAg
ICAgc2l6ZV90IGlubGluZUNhbGxGcmFtZUNvdW50ID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFt
ZXMtPnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJh
bWVDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IG1fZ3JhcGgubV9pbmxpbmVDYWxsRnJhbWVzLT5hdChpKTsKKyAgICAgICAgZm9yIChJ
bmxpbmVDYWxsRnJhbWVTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZy
YW1lcy0+YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lID0gKml0ZXI7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxG
cmFtZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCByZXF1aXJlZENhbGxlZVJlZ2lzdGVycyA9IFZp
cnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgKyBj
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVk
Q2FsbGVlUmVnaXN0ZXJzID4gY2FsbGVlUmVnaXN0ZXJzKQpJbmRleDogU291cmNlL1dURi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzU1
OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMTAtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgV1RGOjpCYWcgYW5kIHN0YXJ0IHVzaW5nIGl0IGZvciBJbmxpbmVDYWxsRnJh
bWVTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
Mjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgSW50cm9kdWNlIFdURjo6QmFnLCB3aGljaCBpcyBiYXNpY2FsbHkgYW4gYWxsb2NhdGlv
biBwb29sLiBObyBQT0QgcmVzdHJpY3Rpb25zLiBEb2VzIG9uZQorICAgICAgICBtYWxsb2MgcGVy
IGVudHJ5LiBObyBuZWVkIHRvIHNocmluayBhZnRlcndhcmRzLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQmFnLmg6
IEFkZGVkLgorICAgICAgICAoV1RGOjpCYWc6OkJhZyk6CisgICAgICAgIChXVEY6OkJhZzo6fkJh
Zyk6CisgICAgICAgIChXVEY6OkJhZzo6YWRkKToKKyAgICAgICAgKFdURjo6QmFnOjppdGVyYXRv
cjo6aXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpCYWc6Oml0ZXJhdG9yOjpvcGVyYXRvciEpOgor
ICAgICAgICAoV1RGOjpCYWc6Oml0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoV1RGOjpC
YWc6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdURjo6QmFnOjppdGVyYXRvcjo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OkJhZzo6YmVnaW4pOgorICAgICAgICAoV1RGOjpC
YWc6OmVuZCk6CisgICAgICAgIChXVEY6OkJhZzo6aXNFbXB0eSk6CisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorCiAyMDEzLTEwLTE2ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhdHRlbXB0IG9uIEVGTCBw
b3J0IGFmdGVyIHIxNTc1MjAgYW5kIHIxNTc1MjMKSW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9X
VEYvd3RmL0F0b21pY3MuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVkUG9vbC5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9C
YWcuaCBcCiAgICAgU291cmNlL1dURi93dGYvQml0QXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93
dGYvQml0VmVjdG9yLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvQml0VmVjdG9yLmggXApJbmRl
eDogU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNTc1NTgpCisrKyBTb3Vy
Y2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiAr
MTIyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBdG9taWNzLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEF1dG9kcmFpbmVkUG9vbC5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBVkxUcmVlLmgiIC8+DQorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cd3RmXEJhZy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxCaXRBcnJheS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCaXRt
YXAuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQml0VmVjdG9yLmgiIC8+
DQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNTc1NTgpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAJCTBGOUQzMzYxMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0u
aCAqLzsgfTsKIAkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1
REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGOUQzMzYzMTY1REJB
NzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFt
LmggKi87IH07CisJCTBGQjE0RTE5MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjE0RTE4MTgwRkEyMTgwMDlC
NkI0RCAvKiBCYWcuaCAqLzsgfTsKIAkJMEZDNDQ4ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nl
c3NJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
NDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovOyB9OwogCQkwRkM0RURFNjE2
OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQ
cmludGVyLmggKi87IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4
MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0yODcsNiArMjg4LDcgQEAKIAkJMEY5RDMzNUMxNjVE
QkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaWxlUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50U3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBG
YXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRW
ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwNSw2ICs2MDcsNyBAQAog
CQkJCTE0Njk0MTlBMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJ
CQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sTWFjLm1tICovLAog
CQkJCUE4QTQ3MjVFMTUxQTgyNUEwMDQxMjNGRiAvKiBBVkxUcmVlLmggKi8sCisJCQkJMEZCMTRF
MTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oICovLAogCQkJCTRGMDMyMUJCMTU2QUE4RDEwMDZF
QkFGNiAvKiBCaXRBcnJheS5oICovLAogCQkJCUE4QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBC
aXRtYXAuaCAqLywKIAkJCQlBOEE0NzI2MDE1MUE4MjVBMDA0MTIzRkYgLyogQml0VmVjdG9yLmNw
cCAqLywKQEAgLTEwMDQsNiArMTAwNyw3IEBACiAJCQkJQThBNDc0MEMxNTFBODI1QjAwNDEyM0ZG
IC8qIFBhc3NSZWZQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzZEQkQ4MTUxODE2RTUwMERB
REI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MEYxNTFBODI1QjAw
NDEyM0ZGIC8qIFBvc3NpYmx5TnVsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZCMTRFMTkxODBG
QTIxODAwOUI2QjREIC8qIEJhZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDMzNjMxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM0NDg4MzE2
RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNGNjEy
MDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0JhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCYWdfaAorI2RlZmluZSBCYWdfaAorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEJhZyB7Citwcml2
YXRlOgorICAgIHN0cnVjdCBOb2RlIHsKKyAgICAgICAgVCBtX2l0ZW07CisgICAgICAgIE5vZGUq
IG1fbmV4dDsKKyAgICB9OworICAgIAorcHVibGljOgorICAgIEJhZygpCisgICAgICAgIDogbV9o
ZWFkKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICB+QmFnKCkKKyAgICB7CisgICAgICAgIHdo
aWxlIChtX2hlYWQpIHsKKyAgICAgICAgICAgIE5vZGUqIGN1cnJlbnQgPSBtX2hlYWQ7CisgICAg
ICAgICAgICBtX2hlYWQgPSBjdXJyZW50LT5tX25leHQ7CisgICAgICAgICAgICBkZWxldGUgY3Vy
cmVudDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBUKiBhZGQoKQorICAgIHsKKyAgICAg
ICAgTm9kZSogbmV3Tm9kZSA9IG5ldyBOb2RlOworICAgICAgICBuZXdOb2RlLT5tX25leHQgPSBt
X2hlYWQ7CisgICAgICAgIG1faGVhZCA9IG5ld05vZGU7CisgICAgICAgIHJldHVybiAmbmV3Tm9k
ZS0+bV9pdGVtOworICAgIH0KKyAgICAKKyAgICBjbGFzcyBpdGVyYXRvciB7CisgICAgcHVibGlj
OgorICAgICAgICBpdGVyYXRvcigpCisgICAgICAgICAgICA6IG1fbm9kZSgwKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgc29ydCBvZiBjaGVhdGlu
ZzsgaXQncyBlcXVpdmFsZW50IHRvIGl0ZXIgPT0gZW5kKCkuCisgICAgICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fbm9kZTsgfQorICAgICAgICAKKyAgICAgICAgVCogb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gJm1fbm9kZS0+bV9pdGVtOyB9CisgICAgICAgIAorICAg
ICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbm9k
ZSA9IG1fbm9kZS0+bV9uZXh0OworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1f
bm9kZTsKKyAgICAgICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGZyaWVuZCBjbGFzcyBXVEY6OkJhZzsKKyAgICAgICAgTm9kZSogbV9ub2RlOworICAgIH07
CisgICAgCisgICAgaXRlcmF0b3IgYmVnaW4oKQorICAgIHsKKyAgICAgICAgaXRlcmF0b3IgcmVz
dWx0OworICAgICAgICByZXN1bHQubV9ub2RlID0gbV9oZWFkOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBpdGVyYXRvcigp
OyB9CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1faGVhZDsgfQor
ICAgIAorcHJpdmF0ZToKKyAgICBOb2RlKiBtX2hlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpCYWc7CisKKyNlbmRpZiAvLyBCYWdfaAorCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTU3NTU4KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBAIHNldChXVEZfSEVBREVSUwogICAg
IEFWTFRyZWUuaAogICAgIEFzc2VydGlvbnMuaAogICAgIEF0b21pY3MuaAorICAgIEJhZy5oCiAg
ICAgQml0QXJyYXkuaAogICAgIEJpdFZlY3Rvci5oCiAgICAgQml0bWFwLmgK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214421</attachid>
            <date>2013-10-16 22:37:51 -0700</date>
            <delta_ts>2013-10-17 00:16:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16662</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NTU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDEzLTEwLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIFdURjo6QmFnIGFuZCBzdGFydCB1c2luZyBpdCBmb3IgSW5saW5lQ2FsbEZyYW1l
U2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFVzZSBCYWcgZm9yIElubGluZUNhbGxGcmFtZVNldC4gSWYgdGhpcyB3b3JrcyBvdXQgdGhl
biBJJ2xsIG1ha2Ugb3RoZXIKKyAgICAgICAgU2VnbWVudGVkVmVjdG9ycyBpbnRvIEJhZ3MgYXMg
d2VsbC4KKworICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZVNldC5jcHA6CisgICAg
ICAgIChKU0M6OklubGluZUNhbGxGcmFtZVNldDo6YWRkKToKKyAgICAgICAgKiBieXRlY29kZS9J
bmxpbmVDYWxsRnJhbWVTZXQuaDoKKyAgICAgICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lU2V0Ojpi
ZWdpbik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZVNldDo6ZW5kKToKKyAgICAgICAg
KiBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5r
KToKKyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHVmlydHVhbFJl
Z2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWaXJ0dWFsUmVn
aXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisKIDIwMTMtMTAtMTYgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBsaWJsbHZtRm9ySlNDIHNob3VsZG4ndCBjYWxs
IGV4aXQoMSkgb24gcmVwb3J0X2ZhdGFsX2Vycm9yKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuY3BwCShyZXZpc2lv
biAxNTc1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDcgQEAgSW5saW5lQ2FsbEZy
YW1lU2V0Ojp+SW5saW5lQ2FsbEZyYW1lU2V0KAogCiBJbmxpbmVDYWxsRnJhbWUqIElubGluZUNh
bGxGcmFtZVNldDo6YWRkKCkKIHsKLSAgICBtX2ZyYW1lcy5hcHBlbmQoSW5saW5lQ2FsbEZyYW1l
KCkpOwotICAgIHJldHVybiAmbV9mcmFtZXMubGFzdCgpOwotfQotCi12b2lkIElubGluZUNhbGxG
cmFtZVNldDo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fZnJhbWVzLnNocmlua1RvRml0KCk7Cisg
ICAgcmV0dXJuIG1fZnJhbWVzLmFkZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
U2V0LmgJKHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbmxpbmVDYWxsRnJhbWVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAog
I2RlZmluZSBJbmxpbmVDYWxsRnJhbWVTZXRfaAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgor
I2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miwx
NSArNDIsMTIgQEAgcHVibGljOgogICAgIAogICAgIElubGluZUNhbGxGcmFtZSogYWRkKCk7CiAg
ICAgCi0gICAgLy8gVGhlIG9ubHkgdXNlcnMgb2YgdGhlc2UgbWV0aG9kcyBqdXN0IHdhbnQgdG8g
aXRlcmF0ZSBhbGwgaW5saW5lIGNhbGwgZnJhbWVzLgotICAgIC8vIFRoZXJlIGlzIG5vIHJlcXVp
cmVtZW50IGZvciByYW5kb20gYWNjZXNzLgotICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2ZyYW1lcy5zaXplKCk7IH0KLSAgICBJbmxpbmVDYWxsRnJhbWUqIGF0KHVuc2lnbmVk
IGkpIHsgcmV0dXJuICZtX2ZyYW1lc1tpXTsgfQotICAgIAotICAgIHZvaWQgc2hyaW5rVG9GaXQo
KTsKKyAgICB0eXBlZGVmIEJhZzxJbmxpbmVDYWxsRnJhbWU+OjppdGVyYXRvciBpdGVyYXRvcjsK
KyAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZnJhbWVzLmJlZ2luKCk7IH0KKyAgICBp
dGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2ZyYW1lcy5lbmQoKTsgfQogICAgIAogcHJpdmF0ZToK
LSAgICBTZWdtZW50ZWRWZWN0b3I8SW5saW5lQ2FsbEZyYW1lLCA0PiBtX2ZyYW1lczsKKyAgICBC
YWc8SW5saW5lQ2FsbEZyYW1lPiBtX2ZyYW1lczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNTc1NTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOCArMTIyLDggQEAgcHVibGljOgogICAgICAgICBib29s
IGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlY29yZCB3aGljaCBhcmd1
bWVudHMgYXJlIGtub3duIHRvIGVzY2FwZSBubyBtYXR0ZXIgd2hhdC4KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPnNpemUoKTsgaS0tOykKLSAg
ICAgICAgICAgIHBydW5lT2J2aW91c0FyZ3VtZW50Q3JlYXRpb25zKG1fZ3JhcGgubV9pbmxpbmVD
YWxsRnJhbWVzLT5hdChpKSk7CisgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lU2V0OjppdGVy
YXRvciBpdGVyID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPmJlZ2luKCk7ICEhaXRlcjsg
KytpdGVyKQorICAgICAgICAgICAgcHJ1bmVPYnZpb3VzQXJndW1lbnRDcmVhdGlvbnMoKml0ZXIp
OwogICAgICAgICBwcnVuZU9idmlvdXNBcmd1bWVudENyZWF0aW9ucygwKTsgLy8gdGhlIG1hY2hp
bmUgY2FsbCBmcmFtZS4KICAgICAgICAgCiAgICAgICAgIC8vIENyZWF0ZSBkYXRhIGZvciB2YXJp
YWJsZSBhY2Nlc3MgZGF0YXMgdGhhdCB3ZSB3aWxsIHdhbnQgdG8gYW5hbHl6ZS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAx
NTc1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU4LDEwICsxNTgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5r
KExpbmtCdWZmZXImIGxpbmtCCiAgICAgZGF0YUxvZ0YoIkpJVCBjb2RlIGZvciAlcCBzdGFydCBh
dCBbJXAsICVwKS4gU2l6ZSA9ICV6dS5cbiIsIG1fY29kZUJsb2NrLCBsaW5rQnVmZmVyLmRlYnVn
QWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkg
KyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpLCBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpKTsKICNlbmRp
ZgogICAgIAotICAgIGlmICghbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPmlzRW1wdHkoKSkg
ewotICAgICAgICBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+c2hyaW5rVG9GaXQoKTsKKyAg
ICBpZiAoIW1fZ3JhcGgubV9pbmxpbmVDYWxsRnJhbWVzLT5pc0VtcHR5KCkpCiAgICAgICAgIG1f
aml0Q29kZS0+Y29tbW9uLmlubGluZUNhbGxGcmFtZXMgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZy
YW1lcy5yZWxlYXNlKCk7Ci0gICAgfQogICAgIAogICAgIG1faml0Q29kZS0+Y29tbW9uLm1hY2hp
bmVDYXB0dXJlU3RhcnQgPSBtX2dyYXBoLm1fbWFjaGluZUNhcHR1cmVTdGFydDsKICAgICBtX2pp
dENvZGUtPmNvbW1vbi5zbG93QXJndW1lbnRzID0gc3RkOjptb3ZlKG1fZ3JhcGgubV9zbG93QXJn
dW1lbnRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFj
a0xheW91dFBoYXNlLmNwcAkocmV2aXNpb24gMTU3NTU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDgg
KzEwMiw4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBpZiAoY29kZUJsb2NrKCktPnVu
Y2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlcigpLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHVzZWRM
b2NhbHMuc2V0KGNvZGVCbG9jaygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKS50b0xvY2FsKCkpOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+c2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IG1fZ3JhcGgubV9pbmxpbmVDYWxsRnJhbWVzLT5hdChpKTsKKyAgICAgICAgZm9yIChJbmxp
bmVDYWxsRnJhbWVTZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1l
cy0+YmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lID0gKml0ZXI7CiAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxG
cmFtZS0+ZXhlY3V0YWJsZS0+dXNlc0FyZ3VtZW50cygpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgCkBAIC0xNjYsOCArMTY2LDggQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGFsbG9jYXRpb25bY29kZUJsb2NrKCktPmFj
dGl2YXRpb25SZWdpc3RlcigpLnRvTG9jYWwoKV0pKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPnNpemUo
KTsgaS0tOykgewotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+YXQoaSk7CisgICAgICAgIGZvciAoSW5saW5l
Q2FsbEZyYW1lU2V0OjppdGVyYXRvciBpdGVyID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMt
PmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9ICppdGVyOwogICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUtPnVzZXNBcmd1bWVudHMoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzUmVnaXN0ZXIgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDkgKzEy
NSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdGhhdCBjb3VsZCBiZSB1c2VkIGJ5IHRoaXMgY29k
ZSBibG9jayBldmVuIGlmIGl0IGV4aXRzOyBpdCBtYXkgYmUgbW9yZQogICAgICAgICAvLyB0aGFu
IHdoYXQgdGhpcyBjb2RlIGJsb2NrIG5lZWRzIGlmIGl0IG5ldmVyIGV4aXRzLgogICAgICAgICB1
bnNpZ25lZCBjYWxsZWVSZWdpc3RlcnMgPSBzY29yZUJvYXJkLmhpZ2hXYXRlcm1hcmsoKSArIG1f
Z3JhcGgubV9wYXJhbWV0ZXJTbG90czsKLSAgICAgICAgc2l6ZV90IGlubGluZUNhbGxGcmFtZUNv
dW50ID0gbV9ncmFwaC5tX2lubGluZUNhbGxGcmFtZXMtPnNpemUoKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJhbWVDb3VudDsgaSsrKSB7Ci0gICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fZ3JhcGgubV9pbmxpbmVDYWxs
RnJhbWVzLT5hdChpKTsKKyAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWVTZXQ6Oml0ZXJhdG9y
IGl0ZXIgPSBtX2dyYXBoLm1faW5saW5lQ2FsbEZyYW1lcy0+YmVnaW4oKTsgISFpdGVyOyArK2l0
ZXIpIHsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gKml0
ZXI7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCByZXF1aXJlZENhbGxlZVJlZ2lzdGVycyA9IFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkgKyBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVkQ2FsbGVlUmVnaXN0ZXJzID4gY2FsbGVlUmVn
aXN0ZXJzKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMTAtMTYgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpCYWcgYW5kIHN0
YXJ0IHVzaW5nIGl0IGZvciBJbmxpbmVDYWxsRnJhbWVTZXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjk0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgSW50cm9kdWNlIFdURjo6QmFnLCB3
aGljaCBpcyBiYXNpY2FsbHkgYW4gYWxsb2NhdGlvbiBwb29sLiBObyBQT0QgcmVzdHJpY3Rpb25z
LiBEb2VzIG9uZQorICAgICAgICBtYWxsb2MgcGVyIGVudHJ5LiBObyBuZWVkIHRvIHNocmluayBh
ZnRlcndhcmRzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBX
VEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQmFnLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpCYWc6
OkJhZyk6CisgICAgICAgIChXVEY6OkJhZzo6fkJhZyk6CisgICAgICAgIChXVEY6OkJhZzo6YWRk
KToKKyAgICAgICAgKFdURjo6QmFnOjppdGVyYXRvcjo6aXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpCYWc6Oml0ZXJhdG9yOjpvcGVyYXRvciEpOgorICAgICAgICAoV1RGOjpCYWc6Oml0ZXJhdG9y
OjpvcGVyYXRvciopOgorICAgICAgICAoV1RGOjpCYWc6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKToK
KyAgICAgICAgKFdURjo6QmFnOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6
OkJhZzo6YmVnaW4pOgorICAgICAgICAoV1RGOjpCYWc6OmVuZCk6CisgICAgICAgIChXVEY6OkJh
Zzo6aXNFbXB0eSk6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorCiAyMDEzLTEwLTE2
ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeCBhdHRlbXB0IG9uIEVGTCBwb3J0IGFmdGVyIHIxNTc1MjAgYW5kIHIxNTc1
MjMKSW5kZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1NzU1OCkKKysrIFNvdXJj
ZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0F0b21pY3MuY3BwIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9BdG9taWNzLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0F1dG9kcmFpbmVk
UG9vbC5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9CYWcuaCBcCiAgICAgU291cmNlL1dURi93dGYv
Qml0QXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcCBcCiAgICAgU291
cmNlL1dURi93dGYvQml0VmVjdG9yLmggXApJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJvai9X
VEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qCShyZXZpc2lvbiAxNTc1NTgpCisrKyBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0ZlxBdG9taWNzLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXEF1dG9kcmFpbmVkUG9vbC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxBVkxUcmVlLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJhZy5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCaXRBcnJheS5oIiAvPg0KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCaXRtYXAuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlx3dGZcQml0VmVjdG9yLmgiIC8+DQpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTc1NTgpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiAJCTBGOUQzMzYxMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVDMTY1REJB
NzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLzsgfTsKIAkJMEY5RDMzNjIxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5jcHAgKi87IH07CiAJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUUx
NjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi87IH07CisJCTBGQjE0RTE5MTgwRkEy
MTgwMDlCNkI0RCAvKiBCYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLzsgfTsKIAkJMEZD
NDQ4ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFBy
b2Nlc3NJRC5oICovOyB9OwogCQkwRkM0RURFNjE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmlu
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0
RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi87IH07CiAJCTBGRDgxQUM1
MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFz
dEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0y
ODcsNiArMjg4LDcgQEAKIAkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0
cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlUHJpbnRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3
IC8qIFByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzNUUx
NjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
QjE0RTE4MTgwRkEyMTgwMDlCNkI0RCAvKiBCYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQmFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzQ0ODgyMTZG
RTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRFREU1
MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYwNSw2ICs2MDcsNyBAQAogCQkJCTE0Njk0MTlBMTZFQUIxMEEwMDI0RTE0
NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJCQkxNDY5NDE5QjE2RUFCMTBBMDAyNEUxNDYg
LyogQXV0b2RyYWluZWRQb29sTWFjLm1tICovLAogCQkJCUE4QTQ3MjVFMTUxQTgyNUEwMDQxMjNG
RiAvKiBBVkxUcmVlLmggKi8sCisJCQkJMEZCMTRFMTgxODBGQTIxODAwOUI2QjREIC8qIEJhZy5o
ICovLAogCQkJCTRGMDMyMUJCMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oICovLAogCQkJ
CUE4QTQ3MjVGMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRtYXAuaCAqLywKIAkJCQlBOEE0NzI2MDE1
MUE4MjVBMDA0MTIzRkYgLyogQml0VmVjdG9yLmNwcCAqLywKQEAgLTEwMDQsNiArMTAwNyw3IEBA
CiAJCQkJQThBNDc0MEMxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4NzZEQkQ4MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDc0MEYxNTFBODI1QjAwNDEyM0ZGIC8qIFBvc3NpYmx5TnVsbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEZCMTRFMTkxODBGQTIxODAwOUI2QjREIC8qIEJhZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkM0NDg4MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lE
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3Rm
L0JhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBCYWdfaAorI2RlZmluZSBCYWdfaAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK2NsYXNzIEJhZyB7Citwcml2YXRlOgorICAgIHN0cnVjdCBOb2RlIHsKKyAg
ICAgICAgVCBtX2l0ZW07CisgICAgICAgIE5vZGUqIG1fbmV4dDsKKyAgICB9OworICAgIAorcHVi
bGljOgorICAgIEJhZygpCisgICAgICAgIDogbV9oZWFkKDApCisgICAgeworICAgIH0KKyAgICAK
KyAgICB+QmFnKCkKKyAgICB7CisgICAgICAgIHdoaWxlIChtX2hlYWQpIHsKKyAgICAgICAgICAg
IE5vZGUqIGN1cnJlbnQgPSBtX2hlYWQ7CisgICAgICAgICAgICBtX2hlYWQgPSBjdXJyZW50LT5t
X25leHQ7CisgICAgICAgICAgICBkZWxldGUgY3VycmVudDsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBUKiBhZGQoKQorICAgIHsKKyAgICAgICAgTm9kZSogbmV3Tm9kZSA9IG5ldyBOb2Rl
OworICAgICAgICBuZXdOb2RlLT5tX25leHQgPSBtX2hlYWQ7CisgICAgICAgIG1faGVhZCA9IG5l
d05vZGU7CisgICAgICAgIHJldHVybiAmbmV3Tm9kZS0+bV9pdGVtOworICAgIH0KKyAgICAKKyAg
ICBjbGFzcyBpdGVyYXRvciB7CisgICAgcHVibGljOgorICAgICAgICBpdGVyYXRvcigpCisgICAg
ICAgICAgICA6IG1fbm9kZSgwKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIC8vIFRoaXMgaXMgc29ydCBvZiBjaGVhdGluZzsgaXQncyBlcXVpdmFsZW50IHRvIGl0ZXIg
PT0gZW5kKCkuCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fbm9k
ZTsgfQorICAgICAgICAKKyAgICAgICAgVCogb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gJm1f
bm9kZS0+bV9pdGVtOyB9CisgICAgICAgIAorICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbm9kZSA9IG1fbm9kZS0+bV9uZXh0OworICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsKKyAgICAgICAgfQorICAgIHByaXZh
dGU6CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBXVEY6OkJhZzsK
KyAgICAgICAgTm9kZSogbV9ub2RlOworICAgIH07CisgICAgCisgICAgaXRlcmF0b3IgYmVnaW4o
KQorICAgIHsKKyAgICAgICAgaXRlcmF0b3IgcmVzdWx0OworICAgICAgICByZXN1bHQubV9ub2Rl
ID0gbV9oZWFkOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpdGVy
YXRvciBlbmQoKSB7IHJldHVybiBpdGVyYXRvcigpOyB9CisgICAgCisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIW1faGVhZDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBOb2RlKiBt
X2hlYWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpCYWc7CisKKyNl
bmRpZiAvLyBCYWdfaAorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU3NTU4
KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMs
NiArMyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIEFWTFRyZWUuaAogICAgIEFzc2VydGlvbnMu
aAogICAgIEF0b21pY3MuaAorICAgIEJhZy5oCiAgICAgQml0QXJyYXkuaAogICAgIEJpdFZlY3Rv
ci5oCiAgICAgQml0bWFwLmgK
</data>
<flag name="review"
          id="236961"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>