<?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>76969</bug_id>
          
          <creation_ts>2012-01-24 17:53:10 -0800</creation_ts>
          <short_desc>Make DFG update topCallFrame</short_desc>
          <delta_ts>2012-01-25 11:44:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541908</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-01-24 17:53:10 -0800</bug_when>
    <thetext>Make DFG update topCallFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541912</commentid>
    <comment_count>1</comment_count>
      <attachid>123861</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-01-24 17:56:09 -0800</bug_when>
    <thetext>Created attachment 123861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541916</commentid>
    <comment_count>2</comment_count>
      <attachid>123862</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-01-24 17:57:48 -0800</bug_when>
    <thetext>Created attachment 123862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542491</commentid>
    <comment_count>3</comment_count>
      <attachid>123862</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-25 11:40:32 -0800</bug_when>
    <thetext>Comment on attachment 123862
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542494</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-01-25 11:43:41 -0800</bug_when>
    <thetext>Committed r105905: &lt;http://trac.webkit.org/changeset/105905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542496</commentid>
    <comment_count>5</comment_count>
      <attachid>123862</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-01-25 11:44:43 -0800</bug_when>
    <thetext>Comment on attachment 123862
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=123862&amp;action=review

Can you post performance results?

&gt; Source/JavaScriptCore/interpreter/Interpreter.h:91
&gt; +    class NativeCallFrameTracer {
&gt; +    public:
&gt; +        ALWAYS_INLINE NativeCallFrameTracer(JSGlobalData* global, CallFrame* callFrame)
&gt; +        {
&gt; +            ASSERT(global);
&gt; +            ASSERT(callFrame);
&gt; +            global-&gt;topCallFrame = callFrame;
&gt; +        }
&gt; +    };

Is it OK that we don&apos;t reset topCallFrame on destruction? When do we need to reset it, and when can we skip that step?

I don&apos;t think the words &quot;native&quot; and &quot;tracer&quot; are clear enough to distinguish NativeCallFrameTracer from TopCallFrameSetter. Answers to the above questions can provide us with a better name.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123861</attachid>
            <date>2012-01-24 17:56:09 -0800</date>
            <delta_ts>2012-01-24 17:57:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76969-20120124175607.patch</filename>
            <type>text/plain</type>
            <size>24733</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjVhMjIwMjkzYzZkMTA1MGE3NzQzNDBiN2UzNjU2NThiNDU0YjEyLi5kMzQ2OGIyZTRiNDMzOTNk
NGZjNDRlMGNhODRhMmE4YmI1N2I5ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMi0wMS0yNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgREZHIHVwZGF0ZSB0b3BDYWxsRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
byBtYW5hZ2UgdG9wQ2FsbEZyYW1lIGFzc2lnbm1lbnQKKyAgICAgICAgaW4gdGhlIERGRyBvcGVy
YXRpb25zLCBhbmQgbWFrZSB1c2Ugb2YgaXQuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbCk6Cisg
ICAgICAgICgpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIpOgorCiAyMDEyLTAx
LTI0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIGNvcHlpbmcgY29sbGVjdG9yIGZvciBvdXQtb2YtbGluZSBKU09iamVjdCBwcm9wZXJ0eSBz
dG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCAyNmJlMjUyODI1Zjg4OWFlZDFiODVlYTRiZjJlM2UxMzNiOWQwMWJjLi5hMmUwMmNlZTZiNzA4
YmRiY2M0NTVhYTNmZjA5NDMzNTA5ZDA4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE3Niw2ICsxNzYsOSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMyX3Qg
aW5kZXgsCiB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMTk0LDcgKzE5Nyw2IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsKEV4ZWNT
dGF0ZSogZXhlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVj
dCBpZiB0b1N0cmluZyB0aHJvd3MgYW4gZXhjZXB0aW9uLgogICAgIElkZW50aWZpZXIgaWRlbnQo
ZXhlYywgcHJvcGVydHkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTIwOCw2ICsy
MTAsOSBAQCBleHRlcm4gIkMiIHsKIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Db252ZXJ0VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cCkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
VGhpc09iamVjdChleGVjKSk7CiB9CiAKQEAgLTIzMSwyMSArMjM2LDMzIEBAIGlubGluZSBKU0Nl
bGwqIGNyZWF0ZVRoaXMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHByb3RvdHlwZSwgSlNGdW5j
dGlvbiogY29uc3RyCiAKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlz
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBwcm90b3R5cGUpCiB7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworCiAgICAgcmV0dXJuIGNyZWF0ZVRoaXMo
ZXhlYywgcHJvdG90eXBlLCBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKSk7CiB9CiAKIEpTQ2Vs
bCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzSW5saW5lZChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogcHJvdG90eXBlLCBKU0NlbGwqIGNvbnN0cnVjdG9yKQogeworICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4g
Y3JlYXRlVGhpcyhleGVjLCBwcm90b3R5cGUsIHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjb25z
dHJ1Y3RvcikpOwogfQogCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFs
RGF0YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwg
ZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAgICAg
CkBAIC0yNTQsNiArMjcxLDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUFkZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGUKIAogRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwor
ICAgIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAg
IEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogICAgIApAQCAtMjg0
LDYgKzMwNCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGluCiAKIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KQogeworICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNW
YWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOwogCkBAIC0z
MDksNiArMzMyLDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGUKIAogRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkKIHsKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBw
cm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOwogCiAgICAgaWYgKHBy
b3BlcnR5LmlzVUludDMyKCkpCkBAIC0zMjksNiArMzU1LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IGJhc2UKIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldChleGVjLCAqcHJvcGVydHlOYW1lLCBzbG90KSk7CkBAIC0zMzcsNiAr
MzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmEKIEpfRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KTsKIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgSWRlbnRpZmllciog
cHJvcGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMs
ICpwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzUwLDYgKzM4Miw5IEBAIEVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNz
KEV4ZWNTdGF0CiBKX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkob3Bl
cmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0KTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgKnByb3BlcnR5TmFt
ZSwgc2xvdCk7CkBAIC0zNjMsNiArMzk4LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkUHJvdG9CdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGUKIEpf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVj
KTsKKyAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChleGVjLCAqcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTM3OCwxMSArNDE2
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
YmFzZSwgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZnVuY3Rpb24sIElkZW50aWZpZXIqIGlk
ZW50KQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmN0aW9uKGV4ZWMsIGFzT2JqZWN0
KGJhc2UpLCAqaWRlbnQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBKU0NlbGwqIHZh
bHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKHZh
bHVlKTsKICAgICBKU09iamVjdCogZ2V0dGVyID0gZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAg
ICBpZiAoIWdldHRlcikKQEAgLTM5NCwyNiArNDM4LDQxIEBAIEVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFz
ZSwKIAogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBvcGVyYXRpb25Q
dXRCeVZhbEludGVybmFsPHRydWU+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkUHJvcGVydHks
IGVuY29kZWRWYWx1ZSk7CiB9CiAKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7Cisg
ICAgCiAgICAgb3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbDxmYWxzZT4oZXhlYywgZW5jb2RlZEJh
c2UsIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KIAogdm9pZCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
Y2VsbCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4
ZWMpOworICAgIAogICAgIG9wZXJhdGlvblB1dEJ5VmFsSW50ZXJuYWw8dHJ1ZT4oZXhlYywgSlNW
YWx1ZTo6ZW5jb2RlKGNlbGwpLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CiAK
IHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBvcGVyYXRpb25QdXRCeVZhbEludGVy
bmFsPGZhbHNlPihleGVjLCBKU1ZhbHVlOjplbmNvZGUoY2VsbCksIGVuY29kZWRQcm9wZXJ0eSwg
ZW5jb2RlZFZhbHVlKTsKIH0KIAogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgaW50MzJf
dCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICAvLyBXZSBzaG91bGQg
b25seSBnZXQgaGVyZSBpZiBpbmRleCBpcyBvdXRzaWRlIHRoZSBleGlzdGluZyB2ZWN0b3IuCiAg
ICAgQVNTRVJUKCFhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXgpKTsKICAgICBKU0FycmF5OjpwdXRC
eUluZGV4KGFycmF5LCBleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OwpAQCAtNDIxLDI5ICs0ODAsNDQgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsQmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KgogCiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSogYXJyYXkpCiB7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIGFycmF5
LT5wdXNoKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwogfQogICAgICAgICAK
IEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRl
KiBleGVjLCBKU0FycmF5KiBhcnJheSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Z2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcnJh
eS0+cG9wKGV4ZWMpKTsKIH0KICAgICAgICAgCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHRydWUpOwogICAgIGJhc2UtPm1ldGhvZFRhYmxlKCktPnB1dChiYXNlLCBl
eGVjLCAqcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7
CiB9CiAKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElk
ZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Z2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmFsc2Up
OwogICAgIGJhc2UtPm1ldGhvZFRhYmxlKCktPnB1dChiYXNlLCBleGVjLCAqcHJvcGVydHlOYW1l
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAKIHZvaWQgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3Bl
cnR5TmFtZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhl
Yyk7CisgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CiAgICAgQVNTRVJUKGJh
c2UtPmlzT2JqZWN0KCkpOwogICAgIGFzT2JqZWN0KGJhc2UpLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCAqcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwg
c2xvdCk7CkBAIC00NTEsNiArNTI1LDkgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogCiB2b2lk
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBiYXNlLCBJZGVudGlm
aWVyKiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2Jh
bERhdGEsIGV4ZWMpOworICAgIAogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZhbHNlKTsKICAg
ICBBU1NFUlQoYmFzZS0+aXNPYmplY3QoKSk7CiAgICAgYXNPYmplY3QoYmFzZSktPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksICpwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBzbG90KTsKQEAgLTQ1OSw2ICs1MzYsOSBAQCB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbAogVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShvcGVyYXRp
b25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3Bl
cnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUoYmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CkBAIC00NzUsNiArNTU1
LDkgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZVdp
dGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXgKIFZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JF
VFVSTl9BRERSRVNTX0VKQ0kob3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKTsKIHZv
aWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlKGJhc2UpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGZhbHNlKTsKQEAgLTQ5MSw2ICs1NzQsOSBAQCB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKgogVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50
aWZpZXIqIHByb3BlcnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewor
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CiAgICAgCkBAIC01MDcsNiArNTkzLDkgQEAgdm9pZCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1
cm5BZGRyZXNzKEV4ZWNTdGEKIFZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VKQ0kob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKIHZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZhbHNlKTsKICAgICAKQEAgLTUy
MiwzMSArNjExLDQ5IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjCiAKIHNpemVfdCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIGpz
TGVzczx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiB9CiAKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVMZXNzRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4ganNMZXNzRXE8dHJ1ZT4oZXhl
YywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpOwogfQogCiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEs
IGV4ZWMpOworICAgIAogICAgIHJldHVybiBqc0xlc3M8ZmFsc2U+KGV4ZWMsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpKTsKIH0KIAogc2l6
ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXJFcShFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAg
IAogICAgIHJldHVybiBqc0xlc3NFcTxmYWxzZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSkpOwogfQogCiBzaXplX3QgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKIHNpemVfdCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBKU1Zh
bHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKICAgICAKQEAgLTU1OCw2ICs2NjUsOSBAQCBz
aXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMikpOwogfQogCkBAIC01OTcsNiArNzA3LDkgQEAgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAg
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxS
ZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTY1MSw2ICs3NjQsOCBAQCBpbmxpbmUgdm9pZCogbGlua0Zv
cihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Q29kZQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7
CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAog
ICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFsdWUoKTsK
ICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVB
c1ZhbHVlKTsKICAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQpAQCAtNzAwLDYgKzgxNSw5
IEBAIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlY0NhbGxlCiBpbmxpbmUgdm9pZCogdmlydHVhbEZvcihFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFsdWUoKTsKICAgICBKU0NlbGwqIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKSkKQEAgLTcyMCw3ICs4MzgsNyBAQCBpbmxp
bmUgdm9pZCogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIH0KIAogdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFs
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUpCi17Cit7ICAgIAogICAgIHJldHVybiB2aXJ0dWFs
Rm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDYWxsKTsKIH0KIApAQCAtNzMxLDYgKzg0OSw5IEBAIHZv
aWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUpCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2
ZShFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBleGVjLT5zY29wZUNoYWluKCk7CiAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGl0ZXIgPSBzY29wZUNoYWluLT5iZWdpbigpOwogICAgIFNjb3BlQ2hhaW5JdGVy
YXRvciBlbmQgPSBzY29wZUNoYWluLT5lbmQoKTsKQEAgLTc0OCwxMSArODY5LDE3IEBAIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMs
IElkZW50aWZpZXIqIHByb3BlCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uUmVzb2x2ZUJhc2UoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUp
CiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAg
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzb2x2ZUJhc2UoZXhlYywgKnByb3BlcnR5
TmFtZSwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlU3RyaWN0UHV0KEV4ZWNTdGF0ZSogZXhl
YywgSWRlbnRpZmllciogcHJvcGVydHlOYW1lKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBKU1ZhbHVlIGJhc2UgPSByZXNvbHZl
QmFzZShleGVjLCAqcHJvcGVydHlOYW1lLCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOwogICAg
IGlmICghYmFzZSkKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIHByb3BlcnR5TmFtZS0+dXN0cmluZygpKSk7CkBAIC03
NjEsNiArODg4LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNv
bHZlQmFzZVN0cmljdFB1dChFeGVjU3RhdGUqIGV4ZWMsIElkZW4KIAogRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgR2xv
YmFsUmVzb2x2ZUluZm8qIHJlc29sdmVJbmZvLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwpAQCAtNzgwLDE2
ICs5MTAsMjUgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZl
R2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgR2xvYmFsUmVzb2wKIAogRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRh
LCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkudG9QcmltaXRpdmUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblN0ckNhdChFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIHN0YXJ0LCBzaXpl
X3Qgc2l6ZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhl
Yyk7CisgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHN0YXJ0KSwgc2l6ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogc3Rh
cnQsIHNpemVfdCBzaXplKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxE
YXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIHN0YXRpY19jYXN0PEpTVmFsdWUqPihzdGFydCksIHNpemUpKTsKIH0KIApAQCAt
ODExLDYgKzk1MCw5IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3
UmVnZXhwKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogcmVnZXhwUHRyCiAKIERGR0hhbmRsZXJFbmNv
ZGVkIERGR19PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqIGV4ZWMs
IHVpbnQzMl90IGNhbGxJbmRleCkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xv
YmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IGV4ZWMt
PmV4Y2VwdGlvbigpOwogICAgIEFTU0VSVChleGNlcHRpb25WYWx1ZSk7CiAKQEAgLTgyNCw2ICs5
NjYsOSBAQCBERkdIYW5kbGVyRW5jb2RlZCBERkdfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXIoRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdAogCiBERkdIYW5kbGVyRW5jb2RlZCBERkdf
T1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJJblN0dWIoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUg
PSBleGVjLT5leGNlcHRpb24oKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFsdWUpOwogICAgIApA
QCAtODQwLDIzICs5ODUsMzUgQEAgREZHSGFuZGxlckVuY29kZWQgREZHX09QRVJBVElPTiBsb29r
dXBFeGNlcHRpb25IYW5kbGVySW5TdHViKEV4ZWNTdGF0ZSogZXhlYywgU3QKIAogZG91YmxlIERG
R19PUEVSQVRJT04gZGZnQ29udmVydEpTVmFsdWVUb051bWJlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9i
YWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50
b051bWJlcihleGVjKTsKIH0KIAogc2l6ZV90IERGR19PUEVSQVRJT04gZGZnQ29udmVydEpTVmFs
dWVUb0ludDMyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIC8v
IHRvSW50MzIvdG9VSW50MzIgcmV0dXJuIHRoZSBzYW1lIHZhbHVlOyB3ZSB3YW50IHRoZSB2YWx1
ZSB6ZXJvIGV4dGVuZGVkIHRvIGZpbGwgdGhlIHJlZ2lzdGVyLgogICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLnRvVUludDMyKGV4ZWMpOwogfQogCiBzaXplX3QgREZHX09QRVJBVElP
TiBkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcCkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
Qm9vbGVhbihleGVjKTsKIH0KIAogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9G
QUlMVVJFKQogdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlv
bkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCogZGVidWdJbmZvUmF3KQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBTcGVjdWxhdGlv
bkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IHN0YXRpY19jYXN0PFNwZWN1bGF0aW9uRmFp
bHVyZURlYnVnSW5mbyo+KGRlYnVnSW5mb1Jhdyk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBkZWJ1Z0luZm8tPmNvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlID0gY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA2ZGZkMzMxZjhmY2VhOTgyOGZlN2FiOWFmNjE1YWFl
NTk5ZmI0MzIxLi4xMjAxODI1ZTAxMjdjYTA4NjU2YzM4MTIwNDJkMTVjN2UzNWY1M2E2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAt
NzksNiArNzksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YTsKICAgICAgICAgQ2FsbEZyYW1lKiBvbGRDYWxsRnJhbWU7CiAgICAgfTsKKyAgICAK
KyAgICBjbGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
QUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWws
IENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2xv
YmFsKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgICAgICAgICAgVU5VU0VE
X1BBUkFNKGdsb2JhbCk7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIGdsb2JhbC0+dG9wQ2FsbEZyYW1lID0gY2FsbEZyYW1lOworICAgICAgICB9Cisg
ICAgfTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBXZSB1c2UgYSBzbWFsbGVyIHJlZW50
cmFuY3kgbGltaXQgb24gaVBob25lIGJlY2F1c2Ugb2YgdGhlIGhpZ2ggYW1vdW50IG9mCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123862</attachid>
            <date>2012-01-24 17:57:48 -0800</date>
            <delta_ts>2012-01-25 11:44:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76969-20120124175747.patch</filename>
            <type>text/plain</type>
            <size>24660</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjVhMjIwMjkzYzZkMTA1MGE3NzQzNDBiN2UzNjU2NThiNDU0YjEyLi5kMzQ2OGIyZTRiNDMzOTNk
NGZjNDRlMGNhODRhMmE4YmI1N2I5ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMi0wMS0yNCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgREZHIHVwZGF0ZSB0b3BDYWxsRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
byBtYW5hZ2UgdG9wQ2FsbEZyYW1lIGFzc2lnbm1lbnQKKyAgICAgICAgaW4gdGhlIERGRyBvcGVy
YXRpb25zLCBhbmQgbWFrZSB1c2Ugb2YgaXQuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbCk6Cisg
ICAgICAgICgpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXIpOgorCiAyMDEyLTAx
LTI0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIGNvcHlpbmcgY29sbGVjdG9yIGZvciBvdXQtb2YtbGluZSBKU09iamVjdCBwcm9wZXJ0eSBz
dG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCAyNmJlMjUyODI1Zjg4OWFlZDFiODVlYTRiZjJlM2UxMzNiOWQwMWJjLi5hMmUwMmNlZTZiNzA4
YmRiY2M0NTVhYTNmZjA5NDMzNTA5ZDA4YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE3Niw2ICsxNzYsOSBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgdWludDMyX3Qg
aW5kZXgsCiB0ZW1wbGF0ZTxib29sIHN0cmljdD4KIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwpAQCAtMTk0LDcgKzE5Nyw2IEBAIEFMV0FZU19JTkxJTkUg
c3RhdGljIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEludGVybmFsKEV4ZWNT
dGF0ZSogZXhlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVj
dCBpZiB0b1N0cmluZyB0aHJvd3MgYW4gZXhjZXB0aW9uLgogICAgIElkZW50aWZpZXIgaWRlbnQo
ZXhlYywgcHJvcGVydHkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTIwOCw2ICsy
MTAsOSBAQCBleHRlcm4gIkMiIHsKIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Db252ZXJ0VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cCkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
VGhpc09iamVjdChleGVjKSk7CiB9CiAKQEAgLTIzMSwyMSArMjM2LDMzIEBAIGlubGluZSBKU0Nl
bGwqIGNyZWF0ZVRoaXMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIHByb3RvdHlwZSwgSlNGdW5j
dGlvbiogY29uc3RyCiAKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlz
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBwcm90b3R5cGUpCiB7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworCiAgICAgcmV0dXJuIGNyZWF0ZVRoaXMo
ZXhlYywgcHJvdG90eXBlLCBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKSk7CiB9CiAKIEpTQ2Vs
bCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzSW5saW5lZChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogcHJvdG90eXBlLCBKU0NlbGwqIGNvbnN0cnVjdG9yKQogeworICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4g
Y3JlYXRlVGhpcyhleGVjLCBwcm90b3R5cGUsIHN0YXRpY19jYXN0PEpTRnVuY3Rpb24qPihjb25z
dHJ1Y3RvcikpOwogfQogCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFs
RGF0YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wMikKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwg
ZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAgICAg
CkBAIC0yNTQsNiArMjcxLDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUFkZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGUKIAogRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwor
ICAgIAogICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOwogICAg
IEpTVmFsdWUgb3AyID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpOwogICAgIApAQCAtMjg0
LDYgKzMwNCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIHVpbnQzMl90IGluCiAKIEVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KQogeworICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CiAgICAgSlNW
YWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOwogCkBAIC0z
MDksNiArMzMyLDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGUKIAogRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSkKIHsKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBw
cm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOwogCiAgICAgaWYgKHBy
b3BlcnR5LmlzVUludDMyKCkpCkBAIC0zMjksNiArMzU1LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IGJhc2UKIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldChleGVjLCAqcHJvcGVydHlOYW1lLCBzbG90KSk7CkBAIC0zMzcsNiAr
MzY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmEKIEpfRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KTsKIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgSWRlbnRpZmllciog
cHJvcGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMs
ICpwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMzUwLDYgKzM4Miw5IEBAIEVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdpdGhSZXR1cm5BZGRyZXNz
KEV4ZWNTdGF0CiBKX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FSkkob3Bl
cmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0KTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUs
IFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgKnByb3BlcnR5TmFt
ZSwgc2xvdCk7CkBAIC0zNjMsNiArMzk4LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRCeUlkUHJvdG9CdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGUKIEpf
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVj
KTsKKyAgICAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsK
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChleGVjLCAqcHJvcGVydHlOYW1lLCBzbG90KTsKQEAgLTM3OCwxMSArNDE2
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbEN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
YmFzZSwgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZnVuY3Rpb24sIElkZW50aWZpZXIqIGlk
ZW50KQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZ1bmN0aW9uKGV4ZWMsIGFzT2JqZWN0
KGJhc2UpLCAqaWRlbnQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBKU0NlbGwqIHZh
bHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKHZh
bHVlKTsKICAgICBKU09iamVjdCogZ2V0dGVyID0gZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKTsKICAg
ICBpZiAoIWdldHRlcikKQEAgLTM5NCwyNiArNDM4LDQxIEBAIEVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFz
ZSwKIAogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBvcGVyYXRpb25Q
dXRCeVZhbEludGVybmFsPHRydWU+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkUHJvcGVydHks
IGVuY29kZWRWYWx1ZSk7CiB9CiAKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7Cisg
ICAgCiAgICAgb3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbDxmYWxzZT4oZXhlYywgZW5jb2RlZEJh
c2UsIGVuY29kZWRQcm9wZXJ0eSwgZW5jb2RlZFZhbHVlKTsKIH0KIAogdm9pZCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
Y2VsbCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4
ZWMpOworICAgIAogICAgIG9wZXJhdGlvblB1dEJ5VmFsSW50ZXJuYWw8dHJ1ZT4oZXhlYywgSlNW
YWx1ZTo6ZW5jb2RlKGNlbGwpLCBlbmNvZGVkUHJvcGVydHksIGVuY29kZWRWYWx1ZSk7CiB9CiAK
IHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBvcGVyYXRpb25QdXRCeVZhbEludGVy
bmFsPGZhbHNlPihleGVjLCBKU1ZhbHVlOjplbmNvZGUoY2VsbCksIGVuY29kZWRQcm9wZXJ0eSwg
ZW5jb2RlZFZhbHVlKTsKIH0KIAogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgaW50MzJf
dCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICAvLyBXZSBzaG91bGQg
b25seSBnZXQgaGVyZSBpZiBpbmRleCBpcyBvdXRzaWRlIHRoZSBleGlzdGluZyB2ZWN0b3IuCiAg
ICAgQVNTRVJUKCFhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXgpKTsKICAgICBKU0FycmF5OjpwdXRC
eUluZGV4KGFycmF5LCBleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OwpAQCAtNDIxLDI5ICs0ODAsNDQgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsQmV5b25kQXJyYXlCb3VuZHMoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KgogCiBFbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSogYXJyYXkpCiB7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIGFycmF5
LT5wdXNoKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwogfQogICAgICAgICAK
IEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRl
KiBleGVjLCBKU0FycmF5KiBhcnJheSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Z2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhcnJh
eS0+cG9wKGV4ZWMpKTsKIH0KICAgICAgICAgCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHRydWUpOwogICAgIGJhc2UtPm1ldGhvZFRhYmxlKCktPnB1dChiYXNlLCBl
eGVjLCAqcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7
CiB9CiAKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElk
ZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Z2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmFsc2Up
OwogICAgIGJhc2UtPm1ldGhvZFRhYmxlKCktPnB1dChiYXNlLCBleGVjLCAqcHJvcGVydHlOYW1l
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgc2xvdCk7CiB9CiAKIHZvaWQgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3Bl
cnR5TmFtZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhl
Yyk7CisgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CiAgICAgQVNTRVJUKGJh
c2UtPmlzT2JqZWN0KCkpOwogICAgIGFzT2JqZWN0KGJhc2UpLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCAqcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwg
c2xvdCk7CkBAIC00NTEsNiArNTI1LDkgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZQogCiB2b2lk
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBiYXNlLCBJZGVudGlm
aWVyKiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2Jh
bERhdGEsIGV4ZWMpOworICAgIAogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZhbHNlKTsKICAg
ICBBU1NFUlQoYmFzZS0+aXNPYmplY3QoKSk7CiAgICAgYXNPYmplY3QoYmFzZSktPnB1dERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCksICpwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpLCBzbG90KTsKQEAgLTQ1OSw2ICs1MzYsOSBAQCB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbAogVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShvcGVyYXRp
b25QdXRCeUlkU3RyaWN0T3B0aW1pemUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3Bl
cnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUoYmFzZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CkBAIC00NzUsNiArNTU1
LDkgQEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZVdp
dGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXgKIFZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JF
VFVSTl9BRERSRVNTX0VKQ0kob3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKTsKIHZv
aWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlKGJhc2UpOwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGZhbHNlKTsKQEAgLTQ5MSw2ICs1NzQsOSBAQCB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKgogVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShvcGVyYXRp
b25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50
aWZpZXIqIHByb3BlcnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQogewor
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QodHJ1ZSk7CiAgICAgCkBAIC01MDcsNiArNTkzLDkgQEAgdm9pZCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1
cm5BZGRyZXNzKEV4ZWNTdGEKIFZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VKQ0kob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKIHZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
SlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZhbHNlKTsKICAgICAKQEAgLTUy
MiwzMSArNjExLDQ5IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjCiAKIHNpemVfdCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIGpz
TGVzczx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSk7CiB9CiAKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVMZXNzRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4ganNMZXNzRXE8dHJ1ZT4oZXhl
YywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MikpOwogfQogCiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEs
IGV4ZWMpOworICAgIAogICAgIHJldHVybiBqc0xlc3M8ZmFsc2U+KGV4ZWMsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpKTsKIH0KIAogc2l6
ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXJFcShFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAg
IAogICAgIHJldHVybiBqc0xlc3NFcTxmYWxzZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRPcDIpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSkpOwogfQogCiBzaXplX3QgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9w
MSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKIHNpemVfdCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBKU1Zh
bHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKTsKICAgICAKQEAgLTU1OCw2ICs2NjUsOSBAQCBz
aXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdQogCiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ax
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMikpOwogfQogCkBAIC01OTcsNiArNzA3LDkgQEAgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAg
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxS
ZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTY1MSw2ICs3NjQsOCBAQCBpbmxpbmUgdm9pZCogbGlua0Zv
cihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywg
Q29kZQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7
CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAog
ICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFsdWUoKTsK
ICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVB
c1ZhbHVlKTsKICAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQpAQCAtNzAwLDYgKzgxNSw5
IEBAIHZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdFdpdGhSZXR1cm5B
ZGRyZXNzKEV4ZWNTdGF0ZSogZXhlY0NhbGxlCiBpbmxpbmUgdm9pZCogdmlydHVhbEZvcihFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKwogICAgIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFzVmFsdWUoKTsKICAgICBKU0NlbGwqIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKSkKQEAgLTcyMCw3ICs4MzgsNyBAQCBpbmxp
bmUgdm9pZCogdmlydHVhbEZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIH0KIAogdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFs
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUpCi17Cit7ICAgIAogICAgIHJldHVybiB2aXJ0dWFs
Rm9yKGV4ZWNDYWxsZWUsIENvZGVGb3JDYWxsKTsKIH0KIApAQCAtNzMxLDYgKzg0OSw5IEBAIHZv
aWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0cnVjdChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUpCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2
ZShFeGVjU3RhdGUqIGV4ZWMsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4gPSBleGVjLT5zY29wZUNoYWluKCk7CiAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGl0ZXIgPSBzY29wZUNoYWluLT5iZWdpbigpOwogICAgIFNjb3BlQ2hhaW5JdGVy
YXRvciBlbmQgPSBzY29wZUNoYWluLT5lbmQoKTsKQEAgLTc0OCwxMSArODY5LDE3IEBAIEVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMs
IElkZW50aWZpZXIqIHByb3BlCiAKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uUmVzb2x2ZUJhc2UoRXhlY1N0YXRlKiBleGVjLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUp
CiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAg
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzb2x2ZUJhc2UoZXhlYywgKnByb3BlcnR5
TmFtZSwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVCYXNlU3RyaWN0UHV0KEV4ZWNTdGF0ZSogZXhl
YywgSWRlbnRpZmllciogcHJvcGVydHlOYW1lKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBKU1ZhbHVlIGJhc2UgPSByZXNvbHZl
QmFzZShleGVjLCAqcHJvcGVydHlOYW1lLCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOwogICAg
IGlmICghYmFzZSkKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIHByb3BlcnR5TmFtZS0+dXN0cmluZygpKSk7CkBAIC03
NjEsNiArODg4LDkgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNv
bHZlQmFzZVN0cmljdFB1dChFeGVjU3RhdGUqIGV4ZWMsIElkZW4KIAogRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgR2xv
YmFsUmVzb2x2ZUluZm8qIHJlc29sdmVJbmZvLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCiB7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwpAQCAtNzgwLDE2
ICs5MTAsMjUgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZl
R2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgR2xvYmFsUmVzb2wKIAogRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRh
LCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSkudG9QcmltaXRpdmUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblN0ckNhdChFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIHN0YXJ0LCBzaXpl
X3Qgc2l6ZSkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhl
Yyk7CisgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHN0YXJ0KSwgc2l6ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogc3Rh
cnQsIHNpemVfdCBzaXplKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxE
YXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIHN0YXRpY19jYXN0PEpTVmFsdWUqPihzdGFydCksIHNpemUpKTsKIH0KIApAQCAt
ODExLDYgKzk1MCw5IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3
UmVnZXhwKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogcmVnZXhwUHRyCiAKIERGR0hhbmRsZXJFbmNv
ZGVkIERGR19PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqIGV4ZWMs
IHVpbnQzMl90IGNhbGxJbmRleCkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xv
YmFsRGF0YSwgZXhlYyk7CisgICAgCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IGV4ZWMt
PmV4Y2VwdGlvbigpOwogICAgIEFTU0VSVChleGNlcHRpb25WYWx1ZSk7CiAKQEAgLTgyNCw2ICs5
NjYsOSBAQCBERkdIYW5kbGVyRW5jb2RlZCBERkdfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhh
bmRsZXIoRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdAogCiBERkdIYW5kbGVyRW5jb2RlZCBERkdf
T1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJJblN0dWIoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCiB7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUg
PSBleGVjLT5leGNlcHRpb24oKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFsdWUpOwogICAgIApA
QCAtODQwLDIzICs5ODUsMzUgQEAgREZHSGFuZGxlckVuY29kZWQgREZHX09QRVJBVElPTiBsb29r
dXBFeGNlcHRpb25IYW5kbGVySW5TdHViKEV4ZWNTdGF0ZSogZXhlYywgU3QKIAogZG91YmxlIERG
R19PUEVSQVRJT04gZGZnQ29udmVydEpTVmFsdWVUb051bWJlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKQogeworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9i
YWxEYXRhLCBleGVjKTsKKyAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50
b051bWJlcihleGVjKTsKIH0KIAogc2l6ZV90IERGR19PUEVSQVRJT04gZGZnQ29udmVydEpTVmFs
dWVUb0ludDMyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIAogICAgIC8v
IHRvSW50MzIvdG9VSW50MzIgcmV0dXJuIHRoZSBzYW1lIHZhbHVlOyB3ZSB3YW50IHRoZSB2YWx1
ZSB6ZXJvIGV4dGVuZGVkIHRvIGZpbGwgdGhlIHJlZ2lzdGVyLgogICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLnRvVUludDMyKGV4ZWMpOwogfQogCiBzaXplX3QgREZHX09QRVJBVElP
TiBkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcCkKIHsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7CisgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
Qm9vbGVhbihleGVjKTsKIH0KIAogI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElPTl9G
QUlMVVJFKQogdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlv
bkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCogZGVidWdJbmZvUmF3KQogeworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAKICAgICBTcGVjdWxhdGlv
bkZhaWx1cmVEZWJ1Z0luZm8qIGRlYnVnSW5mbyA9IHN0YXRpY19jYXN0PFNwZWN1bGF0aW9uRmFp
bHVyZURlYnVnSW5mbyo+KGRlYnVnSW5mb1Jhdyk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBkZWJ1Z0luZm8tPmNvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIGFsdGVybmF0aXZlID0gY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA2ZGZkMzMxZjhmY2VhOTgyOGZlN2FiOWFmNjE1YWFl
NTk5ZmI0MzIxLi4wZjdmZjcwMTdhZmFlNDFmMGFlODhlYTFhMGMzYTA1MTViMzVlMDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAt
NzksNiArNzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YTsKICAgICAgICAgQ2FsbEZyYW1lKiBvbGRDYWxsRnJhbWU7CiAgICAgfTsKKyAgICAK
KyAgICBjbGFzcyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
QUxXQVlTX0lOTElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWws
IENhbGxGcmFtZSogY2FsbEZyYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZ2xv
YmFsKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgICAgICAgICAgZ2xvYmFs
LT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAgICAgIH0KKyAgICB9OwogCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIC8vIFdlIHVzZSBhIHNtYWxsZXIgcmVlbnRyYW5jeSBsaW1pdCBvbiBp
UGhvbmUgYmVjYXVzZSBvZiB0aGUgaGlnaCBhbW91bnQgb2YK
</data>
<flag name="review"
          id="124989"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>