<?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>55721</bug_id>
          
          <creation_ts>2011-03-03 16:14:19 -0800</creation_ts>
          <short_desc>Global IconDatabase should be returned by reference, not as a pointer</short_desc>
          <delta_ts>2011-03-03 16:53:07 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>362044</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-03-03 16:14:19 -0800</bug_when>
    <thetext>Global IconDatabase should be returned by reference, not as a pointer

We null check it in a few places, but not most.  It&apos;s silly - it&apos;s should never be null anyways.

Fixing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362045</commentid>
    <comment_count>1</comment_count>
      <attachid>84646</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-03-03 16:16:40 -0800</bug_when>
    <thetext>Created attachment 84646
Make it a reference throughout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362047</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 16:18:22 -0800</bug_when>
    <thetext>Attachment 84646 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit/qt/Api/qwebsettings.cpp:669:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 24 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>362089</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-03-03 16:53:07 -0800</bug_when>
    <thetext>r80299</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84646</attachid>
            <date>2011-03-03 16:16:40 -0800</date>
            <delta_ts>2011-03-03 16:50:46 -0800</delta_ts>
            <desc>Make it a reference throughout.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>39801</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMjk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDMtMDMgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTcyMQorICAgICAgICBHbG9iYWwgSWNvbkRhdGFiYXNlIHNob3VsZCBiZSByZXR1cm5lZCBi
eSByZWZlcmVuY2UsIG5vdCBhcyBhIHBvaW50ZXIKKworICAgICAgICAqIGhpc3RvcnkvSGlzdG9y
eUl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjp+SGlzdG9yeUl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6SGlzdG9yeUl0ZW06OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJ
dGVtOjppY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcp
OgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdGFydEljb25Mb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZSk6CisKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkRhdGFiYXNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2VOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omljb25EYXRhYmFzZSk6CisgICAgICAgICog
bG9hZGVyL2ljb24vd2luY2UvSWNvbkRhdGFiYXNlV2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKToKKworICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZyk6CisKIDIwMTEt
MDMtMDMgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIFJvYmVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5jcHAJKHJldmlzaW9uIDgwMjkzKQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgSGlzdG9yeUl0ZW06Okhp
c3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX3ByZXYo
MCkKIHsgICAgCi0gICAgaWNvbkRhdGFiYXNlKCktPnJldGFpbkljb25Gb3JQYWdlVVJMKG1fdXJs
U3RyaW5nKTsKKyAgICBpY29uRGF0YWJhc2UoKS5yZXRhaW5JY29uRm9yUGFnZVVSTChtX3VybFN0
cmluZyk7CiB9CiAKIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwg
ZG91YmxlIHRpbWUpCkBAIC0xMDQsNyArMTA0LDcgQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KGNvbnN0IFN0cmluZyYgdQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX3ByZXYoMCkKIHsKLSAg
ICBpY29uRGF0YWJhc2UoKS0+cmV0YWluSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOworICAg
IGljb25EYXRhYmFzZSgpLnJldGFpbkljb25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKIH0KIAog
SGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMTI0
LDEzICsxMjQsMTMgQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybAog
ICAgICwgbV9uZXh0KDApCiAgICAgLCBtX3ByZXYoMCkKIHsgICAgCi0gICAgaWNvbkRhdGFiYXNl
KCktPnJldGFpbkljb25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKKyAgICBpY29uRGF0YWJhc2Uo
KS5yZXRhaW5JY29uRm9yUGFnZVVSTChtX3VybFN0cmluZyk7CiB9CiAKIEhpc3RvcnlJdGVtOjp+
SGlzdG9yeUl0ZW0oKQogewogICAgIEFTU0VSVCghbV9jYWNoZWRQYWdlKTsKLSAgICBpY29uRGF0
YWJhc2UoKS0+cmVsZWFzZUljb25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKKyAgICBpY29uRGF0
YWJhc2UoKS5yZWxlYXNlSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOwogI2lmIFBMQVRGT1JN
KEFORFJPSUQpCiAgICAgaWYgKG1fYnJpZGdlKQogICAgICAgICBtX2JyaWRnZS0+ZGV0YWNoSGlz
dG9yeUl0ZW0oKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBI
aXN0b3J5SXRlbTo6Y29wCiAKIHZvaWQgSGlzdG9yeUl0ZW06OnJlc2V0KCkKIHsKLSAgICBpY29u
RGF0YWJhc2UoKS0+cmVsZWFzZUljb25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKKyAgICBpY29u
RGF0YWJhc2UoKS5yZWxlYXNlSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOwogCiAgICAgbV91
cmxTdHJpbmcgPSBTdHJpbmcoKTsKICAgICBtX29yaWdpbmFsVVJMU3RyaW5nID0gU3RyaW5nKCk7
CkBAIC0yMzIsOCArMjMyLDggQEAgY29uc3QgU3RyaW5nJiBIaXN0b3J5SXRlbTo6YWx0ZXJuYXRl
VGl0bAogCiBJbWFnZSogSGlzdG9yeUl0ZW06Omljb24oKSBjb25zdAogewotICAgIEltYWdlKiBy
ZXN1bHQgPSBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcsIEludFNp
emUoMTYsIDE2KSk7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6IGljb25EYXRhYmFzZSgp
LT5kZWZhdWx0SWNvbihJbnRTaXplKDE2LCAxNikpOworICAgIEltYWdlKiByZXN1bHQgPSBpY29u
RGF0YWJhc2UoKS5pY29uRm9yUGFnZVVSTChtX3VybFN0cmluZywgSW50U2l6ZSgxNiwgMTYpKTsK
KyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDogaWNvbkRhdGFiYXNlKCkuZGVmYXVsdEljb24o
SW50U2l6ZSgxNiwgMTYpKTsKIH0KIAogZG91YmxlIEhpc3RvcnlJdGVtOjpsYXN0VmlzaXRlZFRp
bWUoKSBjb25zdApAQCAtMjc1LDkgKzI3NSw5IEBAIHZvaWQgSGlzdG9yeUl0ZW06OnNldEFsdGVy
bmF0ZVRpdGxlKGNvbnMKIHZvaWQgSGlzdG9yeUl0ZW06OnNldFVSTFN0cmluZyhjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKIHsKICAgICBpZiAobV91cmxTdHJpbmcgIT0gdXJsU3RyaW5nKSB7Ci0g
ICAgICAgIGljb25EYXRhYmFzZSgpLT5yZWxlYXNlSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcp
OworICAgICAgICBpY29uRGF0YWJhc2UoKS5yZWxlYXNlSWNvbkZvclBhZ2VVUkwobV91cmxTdHJp
bmcpOwogICAgICAgICBtX3VybFN0cmluZyA9IHVybFN0cmluZzsKLSAgICAgICAgaWNvbkRhdGFi
YXNlKCktPnJldGFpbkljb25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKKyAgICAgICAgaWNvbkRh
dGFiYXNlKCkucmV0YWluSWNvbkZvclBhZ2VVUkwobV91cmxTdHJpbmcpOwogICAgIH0KICAgICAK
ICAgICBub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDgwMjkzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkyLDcgKzY5Miw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0SWNvbkxvYWRlcigpCiAgICAgaWYgKCFpc0xvYWRpbmdN
YWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFpY29uRGF0YWJhc2UoKSB8
fCAhaWNvbkRhdGFiYXNlKCktPmlzRW5hYmxlZCgpKQorICAgIGlmICghaWNvbkRhdGFiYXNlKCku
aXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBLVVJMIHVybChpY29uVVJM
KCkpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0SWNvbkxvYWRl
cigpCiAKICAgICAvLyBJZiB3ZSdyZSBub3QgcmVsb2FkaW5nIGFuZCB0aGUgaWNvbiBkYXRhYmFz
ZSBkb2Vzbid0IHNheSB0byBsb2FkIG5vdyB0aGVuIGJhaWwgYmVmb3JlIHdlIGFjdHVhbGx5IHN0
YXJ0IHRoZSBsb2FkCiAgICAgaWYgKGxvYWRUeXBlKCkgIT0gRnJhbWVMb2FkVHlwZVJlbG9hZCAm
JiBsb2FkVHlwZSgpICE9IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKSB7Ci0gICAgICAg
IEljb25Mb2FkRGVjaXNpb24gZGVjaXNpb24gPSBpY29uRGF0YWJhc2UoKS0+bG9hZERlY2lzaW9u
Rm9ySWNvblVSTCh1cmxTdHJpbmcsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgICAgICBJ
Y29uTG9hZERlY2lzaW9uIGRlY2lzaW9uID0gaWNvbkRhdGFiYXNlKCkubG9hZERlY2lzaW9uRm9y
SWNvblVSTCh1cmxTdHJpbmcsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGVjaXNpb24gPT0gSWNvbkxvYWRObykgewogICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwg
IkZyYW1lTG9hZGVyOjpzdGFydEljb25Mb2FkZXIoKSAtIFRvbGQgbm90IHRvIGxvYWQgdGhpcyBp
Y29uLCBjb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VVUkwgbWFwcGlu
ZyIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb21taXRJY29uVVJM
VG9JY29uRGF0YWJhc2UodXJsKTsKQEAgLTcxMSwxMSArNzExLDExIEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN0YXJ0SWNvbkxvYWRlcigpCiAgICAgICAgICAgICAvLyBJZiB0aGUgaWNvbiBkYXRhIGhh
c24ndCBiZWVuIHJlYWQgaW4gZnJvbSBkaXNrIHlldCwga2ljayBvZmYgdGhlIHJlYWQgb2YgdGhl
IGljb24gZnJvbSB0aGUgZGF0YWJhc2UgdG8gbWFrZSBzdXJlIHNvbWVvbmUKICAgICAgICAgICAg
IC8vIGhhcyBkb25lIGl0LiAgVGhpcyBpcyBhZnRlciByZWdpc3RlcmluZyBmb3IgdGhlIG5vdGlm
aWNhdGlvbiBzbyB0aGUgV2ViVmlldyBjYW4gY2FsbCB0aGUgYXBwcm9wcmlhdGUgZGVsZWdhdGUg
bWV0aG9kLgogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGlmIHRoZSBpY29uIGRhdGEgKmlzKiBh
dmFpbGFibGUsIG5vdGlmeSB0aGUgZGVsZWdhdGUKLSAgICAgICAgICAgIGlmICghaWNvbkRhdGFi
YXNlKCktPmljb25EYXRhS25vd25Gb3JJY29uVVJMKHVybFN0cmluZykpIHsKKyAgICAgICAgICAg
IGlmICghaWNvbkRhdGFiYXNlKCkuaWNvbkRhdGFLbm93bkZvckljb25VUkwodXJsU3RyaW5nKSkg
ewogICAgICAgICAgICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJUb2xkIG5vdCB0byBsb2FkIGlj
b24gJXMgYnV0IGljb24gZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAtIHJlZ2lzdGVyaW5nIGZv
ciBub3RpZmljYXRpb24gYW5kIHJlcXVlc3RpbmcgbG9hZCBmcm9tIGRpc2siLCB1cmxTdHJpbmcu
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5yZWdpc3RlckZvcklj
b25Ob3RpZmljYXRpb24oKTsKLSAgICAgICAgICAgICAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZv
clBhZ2VVUkwobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEludFNpemUoMCwg
MCkpOwotICAgICAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVSTChvcmln
aW5hbFJlcXVlc3RVUkwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CisgICAgICAgICAgICAg
ICAgaWNvbkRhdGFiYXNlKCkuaWNvbkZvclBhZ2VVUkwobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCksIEludFNpemUoMCwgMCkpOworICAgICAgICAgICAgICAgIGljb25EYXRhYmFz
ZSgpLmljb25Gb3JQYWdlVVJMKG9yaWdpbmFsUmVxdWVzdFVSTCgpLnN0cmluZygpLCBJbnRTaXpl
KDAsIDApKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgICAgICAgICAgCkBAIC03NTAsMTAgKzc1
MCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0SWNvbkxvYWRlcigpCiAKIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJiBpY29uKQogewot
ICAgIEFTU0VSVChpY29uRGF0YWJhc2UoKSk7CiAgICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1p
dHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBmb3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNv
bi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCkuYXNjaWkoKS5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdFVSTCgpLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvblVSTEZvclBhZ2VVUkwoaWNv
bi5zdHJpbmcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIGlj
b25EYXRhYmFzZSgpLT5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0cmluZygpLCBvcmlnaW5h
bFJlcXVlc3RVUkwoKS5zdHJpbmcoKSk7CisgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZv
clBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5n
KCkpOworICAgIGljb25EYXRhYmFzZSgpLnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5n
KCksIG9yaWdpbmFsUmVxdWVzdFVSTCgpLnN0cmluZygpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6ZmluaXNoZWRQYXJzaW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiA4MDI5MykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NDUsMTAgKzU0NSwxMCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyCiAgICAgfQogCiAgICAgLy8gQWRkIGZhdmljb24gaWYgb25lIGV4
aXN0cyBmb3IgdGhpcyBwYWdlLCBpZiB3ZSBhcmUgYXJjaGl2aW5nIHRoZSBlbnRpcmUgcGFnZS4K
LSAgICBpZiAobm9kZXNTaXplICYmIG5vZGVzWzBdLT5pc0RvY3VtZW50Tm9kZSgpICYmIGljb25E
YXRhYmFzZSgpICYmIGljb25EYXRhYmFzZSgpLT5pc0VuYWJsZWQoKSkgewotICAgICAgICBjb25z
dCBTdHJpbmcmIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS0+aWNvblVSTEZvclBhZ2VVUkwocmVz
cG9uc2VVUkwpOwotICAgICAgICBpZiAoIWljb25VUkwuaXNFbXB0eSgpICYmIGljb25EYXRhYmFz
ZSgpLT5pY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkgewotICAgICAgICAgICAgaWYg
KEltYWdlKiBpY29uSW1hZ2UgPSBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwocmVzcG9u
c2VVUkwsIEludFNpemUoMTYsIDE2KSkpIHsKKyAgICBpZiAobm9kZXNTaXplICYmIG5vZGVzWzBd
LT5pc0RvY3VtZW50Tm9kZSgpICYmIGljb25EYXRhYmFzZSgpLmlzRW5hYmxlZCgpKSB7CisgICAg
ICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCA9IGljb25EYXRhYmFzZSgpLmljb25VUkxGb3JQYWdl
VVJMKHJlc3BvbnNlVVJMKTsKKyAgICAgICAgaWYgKCFpY29uVVJMLmlzRW1wdHkoKSAmJiBpY29u
RGF0YWJhc2UoKS5pY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkgeworICAgICAgICAg
ICAgaWYgKEltYWdlKiBpY29uSW1hZ2UgPSBpY29uRGF0YWJhc2UoKS5pY29uRm9yUGFnZVVSTChy
ZXNwb25zZVVSTCwgSW50U2l6ZSgxNiwgMTYpKSkgewogICAgICAgICAgICAgICAgIGlmIChSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGlj
b25JbWFnZS0+ZGF0YSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94
LWljb24iLCAiIiwgIiIpKQogICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5k
KHJlc291cmNlLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDgwMjkzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTMgKzkxLDEzIEBAIHN0YXRpYyBJY29uRGF0YWJhc2VDbGllbnQqIGRlZmF1bHRDbGll
bnQKICAgICByZXR1cm4gZGVmYXVsdENsaWVudDsKIH0KIAotSWNvbkRhdGFiYXNlKiBpY29uRGF0
YWJhc2UoKQorSWNvbkRhdGFiYXNlJiBpY29uRGF0YWJhc2UoKQogewogICAgIGlmICghc2hhcmVk
SWNvbkRhdGFiYXNlKSB7CiAgICAgICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKICAgICAgICAgc2hhcmVkSWNvbkRhdGFiYXNlID0gbmV3IEljb25EYXRhYmFzZTsK
ICAgICB9Ci0gICAgcmV0dXJuIHNoYXJlZEljb25EYXRhYmFzZTsKKyAgICByZXR1cm4gKnNoYXJl
ZEljb25EYXRhYmFzZTsKIH0KIAogLy8gKioqKioqKioqKioqKioqKioqKioqKioqCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkocmV2aXNpb24gODAyOTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSWNvbkRhdGFi
YXNlKCk7CiAgICAgfkljb25EYXRhYmFzZSgpOwotICAgIGZyaWVuZCBJY29uRGF0YWJhc2UqIGlj
b25EYXRhYmFzZSgpOworICAgIGZyaWVuZCBJY29uRGF0YWJhc2UmIGljb25EYXRhYmFzZSgpOwog
CiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKICAgICBzdGF0aWMgdm9pZCBub3RpZnlQZW5kaW5n
TG9hZERlY2lzaW9uc09uTWFpblRocmVhZCh2b2lkKik7CkBAIC0yNDAsNyArMjQwLDcgQEAgcHJp
dmF0ZTogICAgCiB9OwogCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBpY29uIGRh
dGFiYXNlLgotSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKTsKK0ljb25EYXRhYmFzZSYgaWNv
bkRhdGFiYXNlKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlTm9uZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlTm9uZS5jcHAJKHJldmlzaW9uIDgw
MjkzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlTm9uZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDExICs1NiwxMSBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjpk
ZWZhdWx0RGF0YWJhc2VGaWxlCiAgICAgcmV0dXJuIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLnRo
cmVhZHNhZmVDb3B5KCk7CiB9CiAKLUljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkKK0ljb25E
YXRhYmFzZSYgaWNvbkRhdGFiYXNlKCkKIHsKICAgICBpZiAoIXNoYXJlZEljb25EYXRhYmFzZSkK
ICAgICAgICAgc2hhcmVkSWNvbkRhdGFiYXNlID0gbmV3IEljb25EYXRhYmFzZTsKLSAgICByZXR1
cm4gc2hhcmVkSWNvbkRhdGFiYXNlOworICAgIHJldHVybiAqc2hhcmVkSWNvbkRhdGFiYXNlOwog
fQogCiBJY29uRGF0YWJhc2U6Okljb25EYXRhYmFzZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkocmV2aXNpb24gODAyOTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcg
KzE2MSw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZyhjb25zdCBLVVIKICAgICAg
ICAgLy8gU2V0dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0aGUg
ZGF0YWJhc2UgZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCiAgICAgICAgIC8vIGtlcHQgaW4gbWVt
b3J5IChzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5
bmNocm9ub3VzbHkpLCBzaW5jZQogICAgICAgICAvLyB0aGVyZSBpcyBhIHBhZ2UgVVJMIHJlZmVy
ZW5jaW5nIGl0LgotICAgICAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvbkRhdGFGb3JJY29uVVJM
KGRhdGEsIGljb25VUkwuc3RyaW5nKCkpOworICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29u
RGF0YUZvckljb25VUkwoZGF0YSwgaWNvblVSTC5zdHJpbmcoKSk7CiAgICAgICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vd2luY2UvSWNvbkRhdGFiYXNlV2luQ0Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL3dpbmNlL0ljb25E
YXRhYmFzZVdpbkNFLmNwcAkocmV2aXNpb24gODAyOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi93aW5jZS9JY29uRGF0YWJhc2VXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEljb25EYXRhYmFz
ZSogc2hhcmVkSWNvbkRhdGFiYXNlID0gMDsKKwogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBn
bG9iYWwgaWNvbiBkYXRhYmFzZS4KLUljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgeyByZXR1
cm4gMDsgfQorSWNvbkRhdGFiYXNlJiBpY29uRGF0YWJhc2UoKQoreworICAgIGlmICghc2hhcmVk
SWNvbkRhdGFiYXNlKQorICAgICAgICBzaGFyZWRJY29uRGF0YWJhc2UgPSBuZXcgSWNvbkRhdGFi
YXNlOworICAgIHJldHVybiAqc2hhcmVkSWNvbkRhdGFiYXNlOworfQogCiBJY29uRGF0YWJhc2U6
Okljb25EYXRhYmFzZSgpIHt9CiBJY29uRGF0YWJhc2U6On5JY29uRGF0YWJhc2UoKSB7fQpJbmRl
eDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gODAyOTUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0wMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU1NzIxCisgICAgICAgIEdsb2JhbCBJY29uRGF0YWJhc2Ugc2hvdWxkIGJlIHJldHVy
bmVkIGJ5IHJlZmVyZW5jZSwgbm90IGFzIGEgcG9pbnRlcgorCisgICAgICAgICogZXdrL2V3a19z
ZXR0aW5ncy5jcHA6CisgICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX3Nl
dCk6CisgICAgICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCk6CisgICAg
ICAgIChld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9jbGVhcik6CisgICAgICAgIChld2tfc2V0
dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KToKKyAgICAgICAgKGV3a19zZXR0
aW5nc19pY29uX2RhdGFiYXNlX2ljb25fb2JqZWN0X2FkZCk6CisKIDIwMTEtMDMtMDMgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgYW4gaW5j
bHVkZSBvZiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCB0aGF0IEl2ZSBqdXN0IGFkZGVkLiBJdCdz
IGFscmVhZHkgaW5jbHVkZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3Mu
Y3BwCShyZXZpc2lvbiA4MDI5MykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGlu
Z3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgY29uc3QgY2hhciAqZXdr
X3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYQogICovCiBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2lj
b25fZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciAqZGlyZWN0b3J5KQogewotICAgIFdlYkNv
cmU6Omljb25EYXRhYmFzZSgpLT5kZWxheURhdGFiYXNlQ2xlYW51cCgpOworICAgIFdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7CiAKICAgICBpZiAoZGlyZWN0
b3J5KSB7CiAgICAgICAgIHN0cnVjdCBzdGF0IHN0OwpAQCAtMTU1LDE1ICsxNTUsMTUgQEAgRWlu
YV9Cb29sIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdAogICAgICAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CiAgICAgICAgIH0KIAotICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2Uo
KS0+c2V0RW5hYmxlZCh0cnVlKTsKLSAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPm9w
ZW4oV1RGOjpTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9yeSkpOworICAgICAgICBXZWJDb3JlOjpp
Y29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKHRydWUpOworICAgICAgICBXZWJDb3JlOjppY29uRGF0
YWJhc2UoKS5vcGVuKFdURjo6U3RyaW5nOjpmcm9tVVRGOChkaXJlY3RvcnkpKTsKICAgICAgICAg
aWYgKCFfZXdrX2ljb25fZGF0YWJhc2VfcGF0aCkKICAgICAgICAgICAgIF9ld2tfaWNvbl9kYXRh
YmFzZV9wYXRoID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoZGlyZWN0b3J5KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZfZXdrX2ljb25fZGF0YWJh
c2VfcGF0aCwgZGlyZWN0b3J5KTsKICAgICB9IGVsc2UgewotICAgICAgICBXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS0+c2V0RW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLT5jbG9zZSgpOworICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zZXRFbmFi
bGVkKGZhbHNlKTsKKyAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuY2xvc2UoKTsKICAg
ICAgICAgaWYgKF9ld2tfaWNvbl9kYXRhYmFzZV9wYXRoKSB7CiAgICAgICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX2RlbChfZXdrX2ljb25fZGF0YWJhc2VfcGF0aCk7CiAgICAgICAgICAgICBfZXdr
X2ljb25fZGF0YWJhc2VfcGF0aCA9IDA7CkBAIC0xODMsOSArMTgzLDkgQEAgRWluYV9Cb29sIGV3
a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX3BhdAogICovCiBjb25zdCBjaGFyKiBld2tfc2V0dGlu
Z3NfaWNvbl9kYXRhYmFzZV9wYXRoX2dldCh2b2lkKQogewotICAgIGlmICghV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCktPmlzRW5hYmxlZCgpKQorICAgIGlmICghV2ViQ29yZTo6aWNvbkRhdGFiYXNl
KCkuaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICghV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCktPmlzT3BlbigpKQorICAgIGlmICghV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCku
aXNPcGVuKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIF9ld2tfaWNvbl9kYXRh
YmFzZV9wYXRoOwpAQCAtMjAyLDEyICsyMDIsMTIgQEAgY29uc3QgY2hhciogZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfcAogICovCiBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX2ljb25fZGF0YWJh
c2VfY2xlYXIodm9pZCkKIHsKLSAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pc0Vu
YWJsZWQoKSkKKyAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmlzRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKLSAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFz
ZSgpLT5pc09wZW4oKSkKKyAgICBpZiAoIVdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmlzT3Blbigp
KQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAgIFdlYkNvcmU6Omljb25EYXRhYmFz
ZSgpLT5yZW1vdmVBbGxJY29ucygpOworICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnJlbW92
ZUFsbEljb25zKCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApAQCAtMjI2LDcgKzIyNiw3
IEBAIGNhaXJvX3N1cmZhY2VfdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWIKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKIAogICAgIFdlYkNvcmU6OktVUkwga3Vy
bChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKLSAgICBXZWJD
b3JlOjpJbWFnZSAqaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVS
TChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOworICAgIFdlYkNvcmU6
OkltYWdlICppY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaWNvbkZvclBhZ2VVUkwoa3Vy
bC5zdHJpbmcoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKIAogICAgIGlmICghaWNvbikg
ewogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIsIHVybCk7CkBAIC0yNTgsNyArMjU4
LDcgQEAgRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlXwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjYW52YXMsIDApOwogCiAgICAgV2ViQ29yZTo6S1VS
TCBrdXJsKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwotICAg
IFdlYkNvcmU6OkltYWdlKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPmljb25Gb3JQ
YWdlVVJMKGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CisgICAgV2Vi
Q29yZTo6SW1hZ2UqIGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pY29uRm9yUGFnZVVS
TChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZTsKIAogICAgIGlmICghaWNvbikgewpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gODAyOTUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wMy0wMyAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NzIxCisg
ICAgICAgIEdsb2JhbCBJY29uRGF0YWJhc2Ugc2hvdWxkIGJlIHJldHVybmVkIGJ5IHJlZmVyZW5j
ZSwgbm90IGFzIGEgcG9pbnRlcgorCisgICAgICAgICogd2Via2l0L3dlYmtpdGdsb2JhbHMuY3Bw
OgorICAgICAgICAoY2xvc2VJY29uRGF0YWJhc2VPbkV4aXQpOgorICAgICAgICAoV2ViS2l0Ojpz
ZXRJY29uRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ljb25fdXJpKToKKwogMjAxMS0wMy0w
MyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmlu
ZyBhbiBpbmNsdWRlIG9mIFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oIHRoYXQgSXZlIGp1c3QgYWRk
ZWQuIEl0J3MgYWxyZWFkeSBpbmNsdWRlZApJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdGdsb2JhbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRnbG9iYWxzLmNwcAkocmV2aXNpb24gODAyOTMpCisrKyBTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw3ICsyMjUs
NyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50VG9wbGV2ZWxDYWxsYmFjCiAKIHN0YXRpYyB2
b2lkIGNsb3NlSWNvbkRhdGFiYXNlT25FeGl0KCkKIHsKLSAgICBpY29uRGF0YWJhc2UoKS0+Y2xv
c2UoKTsKKyAgICBpY29uRGF0YWJhc2UoKS5jbG9zZSgpOwogfQogCiB2b2lkIHdlYmtpdEluaXQo
KQpAQCAtMjg5LDE0ICsyODksMTQgQEAgdm9pZCBzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wg
ZW5hYmxlZAogICAgIH0KIAogICAgIGlmIChlbmFibGVkKSB7Ci0gICAgICAgIGljb25EYXRhYmFz
ZSgpLT5zZXRFbmFibGVkKHRydWUpOworICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVk
KHRydWUpOwogICAgICAgICBHT3duUHRyPGdjaGFyPiBpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0IiwgImljb25kYXRhYmFzZSIs
IE5VTEwpKTsKLSAgICAgICAgaWNvbkRhdGFiYXNlKCktPm9wZW4oaWNvbkRhdGFiYXNlUGF0aC5n
ZXQoKSk7CisgICAgICAgIGljb25EYXRhYmFzZSgpLm9wZW4oaWNvbkRhdGFiYXNlUGF0aC5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpY29uRGF0YWJhc2UoKS0+c2V0RW5h
YmxlZChmYWxzZSk7Ci0gICAgaWNvbkRhdGFiYXNlKCktPmNsb3NlKCk7CisgICAgaWNvbkRhdGFi
YXNlKCkuc2V0RW5hYmxlZChmYWxzZSk7CisgICAgaWNvbkRhdGFiYXNlKCkuY2xvc2UoKTsKIH0K
IAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShy
ZXZpc2lvbiA4MDI5MykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1OCw3ICs1MDU4LDcgQEAgV2ViS2l0SGl0VGVzdFJl
c3VsdCogd2Via2l0X3dlYl92aWV3X2dldAogR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93
ZWJfdmlld19nZXRfaWNvbl91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwotICAgIFN0
cmluZyBpY29uVVJMID0gaWNvbkRhdGFiYXNlKCktPmljb25VUkxGb3JQYWdlVVJMKGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5wcmV0dHlVUkwoKSk7CisgICAg
U3RyaW5nIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS5pY29uVVJMRm9yUGFnZVVSTChjb3JlKHdl
YlZpZXcpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkucHJldHR5VVJMKCkpOwogICAg
IHdlYlZpZXctPnByaXYtPmljb25VUkkgPSBpY29uVVJMLnV0ZjgoKTsKICAgICByZXR1cm4gd2Vi
Vmlldy0+cHJpdi0+aWNvblVSSS5kYXRhKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MDI5NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMzIEBACisyMDExLTAzLTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3MjEKKyAgICAgICAg
R2xvYmFsIEljb25EYXRhYmFzZSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNlLCBub3Qg
YXMgYSBwb2ludGVyCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAg
ICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBpY29uUGFnZVVSTE1hcHBpbmdDb3VudF0pOgorICAg
ICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBpY29uUmV0YWluZWRQYWdlVVJMQ291bnRdKToKKyAg
ICAgICAgKCtbV2ViQ29yZVN0YXRpc3RpY3MgaWNvblJlY29yZENvdW50XSk6CisgICAgICAgICgr
W1dlYkNvcmVTdGF0aXN0aWNzIGljb25zV2l0aERhdGFDb3VudF0pOgorICAgICAgICAqIE1pc2Mv
V2ViSWNvbkRhdGFiYXNlLm1tOgorICAgICAgICAoLVtXZWJJY29uRGF0YWJhc2UgaW5pdF0pOgor
ICAgICAgICAoLVtXZWJJY29uRGF0YWJhc2UgaWNvbkZvclVSTDp3aXRoU2l6ZTpjYWNoZTpdKToK
KyAgICAgICAgKC1bV2ViSWNvbkRhdGFiYXNlIGljb25VUkxGb3JVUkw6XSk6CisgICAgICAgICgt
W1dlYkljb25EYXRhYmFzZSBkZWZhdWx0SWNvbldpdGhTaXplOl0pOgorICAgICAgICAoLVtXZWJJ
Y29uRGF0YWJhc2UgcmV0YWluSWNvbkZvclVSTDpdKToKKyAgICAgICAgKC1bV2ViSWNvbkRhdGFi
YXNlIHJlbGVhc2VJY29uRm9yVVJMOl0pOgorICAgICAgICAoLVtXZWJJY29uRGF0YWJhc2UgaXNF
bmFibGVkXSk6CisgICAgICAgICgtW1dlYkljb25EYXRhYmFzZSBzZXRFbmFibGVkOl0pOgorICAg
ICAgICAoLVtXZWJJY29uRGF0YWJhc2UgcmVtb3ZlQWxsSWNvbnNdKToKKyAgICAgICAgKCtbV2Vi
SWNvbkRhdGFiYXNlIF9jaGVja0ludGVncml0eUJlZm9yZU9wZW5pbmddKToKKyAgICAgICAgKC1b
V2ViSWNvbkRhdGFiYXNlIF9zdGFydFVwSWNvbkRhdGFiYXNlXSk6CisgICAgICAgICgtW1dlYklj
b25EYXRhYmFzZSBfYXBwbGljYXRpb25XaWxsVGVybWluYXRlOl0pOgorICAgICAgICAoLVtXZWJJ
Y29uRGF0YWJhc2UgX3Jlc2V0Q2FjaGVkV2ViUHJlZmVyZW5jZXM6XSk6CisgICAgICAgIChpbXBv
cnRUb1dlYkNvcmVGb3JtYXQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZTpdKToKKwog
MjAxMS0wMy0wMyAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViQ29yZVN0YXRpc3RpY3MubW0JKHJldmlzaW9uIDgwMjkzKQorKysgU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIyLDIyICsx
MjIsMjIgQEAgKyAodm9pZClnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzTwogCiArIChz
aXplX3QpaWNvblBhZ2VVUkxNYXBwaW5nQ291bnQKIHsKLSAgICByZXR1cm4gaWNvbkRhdGFiYXNl
KCktPnBhZ2VVUkxNYXBwaW5nQ291bnQoKTsKKyAgICByZXR1cm4gaWNvbkRhdGFiYXNlKCkucGFn
ZVVSTE1hcHBpbmdDb3VudCgpOwogfQogCiArIChzaXplX3QpaWNvblJldGFpbmVkUGFnZVVSTENv
dW50CiB7Ci0gICAgcmV0dXJuIGljb25EYXRhYmFzZSgpLT5yZXRhaW5lZFBhZ2VVUkxDb3VudCgp
OworICAgIHJldHVybiBpY29uRGF0YWJhc2UoKS5yZXRhaW5lZFBhZ2VVUkxDb3VudCgpOwogfQog
CiArIChzaXplX3QpaWNvblJlY29yZENvdW50CiB7Ci0gICAgcmV0dXJuIGljb25EYXRhYmFzZSgp
LT5pY29uUmVjb3JkQ291bnQoKTsKKyAgICByZXR1cm4gaWNvbkRhdGFiYXNlKCkuaWNvblJlY29y
ZENvdW50KCk7CiB9CiAKICsgKHNpemVfdClpY29uc1dpdGhEYXRhQ291bnQKIHsKLSAgICByZXR1
cm4gaWNvbkRhdGFiYXNlKCktPmljb25SZWNvcmRDb3VudFdpdGhEYXRhKCk7CisgICAgcmV0dXJu
IGljb25EYXRhYmFzZSgpLmljb25SZWNvcmRDb3VudFdpdGhEYXRhKCk7CiB9CiAKICsgKHNpemVf
dCljYWNoZWRGb250RGF0YUNvdW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYklj
b25EYXRhYmFzZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYklj
b25EYXRhYmFzZS5tbQkocmV2aXNpb24gODAyOTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkljb25EYXRhYmFzZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIC0g
KGlkKWluaXQKICAgICBbZGVmYXVsdHMgcmVnaXN0ZXJEZWZhdWx0czppbml0aWFsRGVmYXVsdHNd
OwogICAgIFtpbml0aWFsRGVmYXVsdHMgcmVsZWFzZV07CiAgICAgQk9PTCBlbmFibGVkID0gW2Rl
ZmF1bHRzIGJvb2xGb3JLZXk6V2ViSWNvbkRhdGFiYXNlRW5hYmxlZERlZmF1bHRzS2V5XTsKLSAg
ICBpY29uRGF0YWJhc2UoKS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICBpY29uRGF0YWJhc2Uo
KS5zZXRFbmFibGVkKGVuYWJsZWQpOwogICAgIGlmIChlbmFibGVkKQogICAgICAgICBbc2VsZiBf
c3RhcnRVcEljb25EYXRhYmFzZV07CiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMzgsNyArMTM4LDcg
QEAgLSAoTlNJbWFnZSAqKWljb25Gb3JVUkw6KE5TU3RyaW5nICopVVJMIAogICAgIGlmIChbVVJM
IF93ZWJraXRfaXNGaWxlVVJMXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIF9pY29uRm9yRmlsZVVS
TDpVUkwgd2l0aFNpemU6c2l6ZV07CiAgICAgICAKLSAgICBpZiAoSW1hZ2UqIGltYWdlID0gaWNv
bkRhdGFiYXNlKCktPmljb25Gb3JQYWdlVVJMKFVSTCwgSW50U2l6ZShzaXplKSkpCisgICAgaWYg
KEltYWdlKiBpbWFnZSA9IGljb25EYXRhYmFzZSgpLmljb25Gb3JQYWdlVVJMKFVSTCwgSW50U2l6
ZShzaXplKSkpCiAgICAgICAgIGlmIChOU0ltYWdlICppY29uID0gd2ViR2V0TlNJbWFnZShpbWFn
ZSwgc2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gaWNvbjsKICAgICByZXR1cm4gW3NlbGYgZGVm
YXVsdEljb25Gb3JVUkw6VVJMIHdpdGhTaXplOnNpemVdOwpAQCAtMTU1LDcgKzE1NSw3IEBAIC0g
KE5TU3RyaW5nICopaWNvblVSTEZvclVSTDooTlNTdHJpbmcgKikKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKIAotICAgIHJldHVybiBpY29uRGF0YWJhc2Uo
KS0+aWNvblVSTEZvclBhZ2VVUkwoVVJMKTsKKyAgICByZXR1cm4gaWNvbkRhdGFiYXNlKCkuaWNv
blVSTEZvclBhZ2VVUkwoVVJMKTsKIH0KIAogLSAoTlNJbWFnZSAqKWRlZmF1bHRJY29uV2l0aFNp
emU6KE5TU2l6ZSlzaXplCkBAIC0xNjQsNyArMTY0LDcgQEAgLSAoTlNJbWFnZSAqKWRlZmF1bHRJ
Y29uV2l0aFNpemU6KE5TU2l6ZQogICAgIEFTU0VSVChzaXplLndpZHRoKTsKICAgICBBU1NFUlQo
c2l6ZS5oZWlnaHQpOwogICAgIAotICAgIEltYWdlKiBpbWFnZSA9IGljb25EYXRhYmFzZSgpLT5k
ZWZhdWx0SWNvbihJbnRTaXplKHNpemUpKTsKKyAgICBJbWFnZSogaW1hZ2UgPSBpY29uRGF0YWJh
c2UoKS5kZWZhdWx0SWNvbihJbnRTaXplKHNpemUpKTsKICAgICByZXR1cm4gaW1hZ2UgPyBpbWFn
ZS0+Z2V0TlNJbWFnZSgpIDogbmlsOwogfQogCkBAIC0xODIsNyArMTgyLDcgQEAgLSAodm9pZCly
ZXRhaW5JY29uRm9yVVJMOihOU1N0cmluZyAqKVVSTAogICAgIGlmICghW3NlbGYgaXNFbmFibGVk
XSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWNvbkRhdGFiYXNlKCktPnJldGFpbkljb25Gb3JQ
YWdlVVJMKFVSTCk7CisgICAgaWNvbkRhdGFiYXNlKCkucmV0YWluSWNvbkZvclBhZ2VVUkwoVVJM
KTsKIH0KIAogLSAodm9pZClyZWxlYXNlSWNvbkZvclVSTDooTlNTdHJpbmcgKilwYWdlVVJMCkBA
IC0xOTIsNyArMTkyLDcgQEAgLSAodm9pZClyZWxlYXNlSWNvbkZvclVSTDooTlNTdHJpbmcgKilw
YQogICAgIGlmICghW3NlbGYgaXNFbmFibGVkXSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWNv
bkRhdGFiYXNlKCktPnJlbGVhc2VJY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKKyAgICBpY29uRGF0
YWJhc2UoKS5yZWxlYXNlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7CiB9CiAKICsgKHZvaWQpZGVs
YXlEYXRhYmFzZUNsZWFudXAKQEAgLTIyNywxNyArMjI3LDE3IEBAIC0gKGlkKWRlbGVnYXRlCiAK
IC0gKEJPT0wpaXNFbmFibGVkCiB7Ci0gICAgcmV0dXJuIGljb25EYXRhYmFzZSgpLT5pc0VuYWJs
ZWQoKTsKKyAgICByZXR1cm4gaWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCk7CiB9CiAKIC0gKHZv
aWQpc2V0RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgQk9PTCBjdXJyZW50bHlFbmFibGVkID0g
W3NlbGYgaXNFbmFibGVkXTsKICAgICBpZiAoY3VycmVudGx5RW5hYmxlZCAmJiAhZmxhZykgewot
ICAgICAgICBpY29uRGF0YWJhc2UoKS0+c2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIGljb25E
YXRhYmFzZSgpLnNldEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBbc2VsZiBfc2h1dERvd25JY29u
RGF0YWJhc2VdOwogICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRseUVuYWJsZWQgJiYgZmxhZykgewot
ICAgICAgICBpY29uRGF0YWJhc2UoKS0+c2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaWNvbkRh
dGFiYXNlKCkuc2V0RW5hYmxlZCh0cnVlKTsKICAgICAgICAgW3NlbGYgX3N0YXJ0VXBJY29uRGF0
YWJhc2VdOwogICAgIH0KIH0KQEAgLTI0OSw3ICsyNDksNyBAQCAtICh2b2lkKXJlbW92ZUFsbElj
b25zCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFZpYSB0aGUgSWNvbkRhdGFiYXNlQ2xpZW50
IGludGVyZmFjZSwgcmVtb3ZlQWxsSWNvbnMoKSB3aWxsIHNlbmQgdGhlIFdlYkljb25EYXRhYmFz
ZURpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aW9uCi0gICAgaWNvbkRhdGFiYXNlKCktPnJlbW92
ZUFsbEljb25zKCk7CisgICAgaWNvbkRhdGFiYXNlKCkucmVtb3ZlQWxsSWNvbnMoKTsKIH0KIAog
QGVuZApAQCAtMjU4LDcgKzI1OCw3IEBAICAgICAvLyBWaWEgdGhlIEljb25EYXRhYmFzZUNsaWVu
dCBpbnRlcmYKIAogKyAodm9pZClfY2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nCiB7Ci0gICAg
aWNvbkRhdGFiYXNlKCktPmNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZygpOworICAgIGljb25E
YXRhYmFzZSgpLmNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZygpOwogfQogCiBAZW5kCkBAIC0y
ODYsNyArMjg2LDcgQEAgLSAodm9pZClfc2VuZERpZFJlbW92ZUFsbEljb25zTm90aWZpY2F0aQog
CiAtICh2b2lkKV9zdGFydFVwSWNvbkRhdGFiYXNlCiB7Ci0gICAgaWNvbkRhdGFiYXNlKCktPnNl
dENsaWVudChkZWZhdWx0Q2xpZW50KCkpOworICAgIGljb25EYXRhYmFzZSgpLnNldENsaWVudChk
ZWZhdWx0Q2xpZW50KCkpOwogICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGRpcmVjdG9yeSB3
ZSBzaG91bGQgYmUgdXNpbmcgZm9yIHRoZSBpY29uLmRiCiAgICAgTlNTdHJpbmcgKmRhdGFiYXNl
RGlyZWN0b3J5ID0gW3NlbGYgX2RhdGFiYXNlRGlyZWN0b3J5XTsKQEAgLTI5NiwxNCArMjk2LDE0
IEBAIC0gKHZvaWQpX3N0YXJ0VXBJY29uRGF0YWJhc2UKICAgICBOU1N0cmluZyAqbGVnYWN5REIg
PSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiaWNv
bi5kYiJdOwogICAgIE5TRmlsZU1hbmFnZXIgKmRlZmF1bHRNYW5hZ2VyID0gW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdOwogICAgIGlmIChbZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0
UGF0aDpsZWdhY3lEQiBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmICFpc0RpcmVjdG9yeSkg
ewotICAgICAgICBOU1N0cmluZyAqbmV3REIgPSBbZGF0YWJhc2VEaXJlY3Rvcnkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50Omljb25EYXRhYmFzZSgpLT5kZWZhdWx0RGF0YWJhc2VGaWxl
bmFtZSgpXTsKKyAgICAgICAgTlNTdHJpbmcgKm5ld0RCID0gW2RhdGFiYXNlRGlyZWN0b3J5IHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDppY29uRGF0YWJhc2UoKS5kZWZhdWx0RGF0YWJh
c2VGaWxlbmFtZSgpXTsKICAgICAgICAgaWYgKCFbZGVmYXVsdE1hbmFnZXIgZmlsZUV4aXN0c0F0
UGF0aDpuZXdEQl0pCiAgICAgICAgICAgICByZW5hbWUoW2xlZ2FjeURCIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbl0sIFtuZXdEQiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dKTsKICAgICB9CiAg
ICAgCiAgICAgLy8gU2V0IHRoZSBwcml2YXRlIGJyb3dzaW5nIHByZWYgdGhlbiBvcGVuIHRoZSBX
ZWJDb3JlIGljb24gZGF0YWJhc2UKLSAgICBpY29uRGF0YWJhc2UoKS0+c2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHByaXZhdGVC
cm93c2luZ0VuYWJsZWRdKTsKLSAgICBpZiAoIWljb25EYXRhYmFzZSgpLT5vcGVuKGRhdGFiYXNl
RGlyZWN0b3J5KSkKKyAgICBpY29uRGF0YWJhc2UoKS5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZF0pOworICAgIGlmICghaWNvbkRhdGFiYXNlKCkub3BlbihkYXRhYmFzZURpcmVjdG9yeSkp
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gaWNvbiBkYXRhYmFzZSIpOwogICAg
IAogICAgIC8vIFJlZ2lzdGVyIGZvciBpbXBvcnRhbnQgbm90aWZpY2F0aW9ucwpAQCAtMzMwLDcg
KzMzMCw3IEBAIC0gKHZvaWQpX3NodXREb3duSWNvbkRhdGFiYXNlCiAKIC0gKHZvaWQpX2FwcGxp
Y2F0aW9uV2lsbFRlcm1pbmF0ZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAg
ICBpY29uRGF0YWJhc2UoKS0+Y2xvc2UoKTsKKyAgICBpY29uRGF0YWJhc2UoKS5jbG9zZSgpOwog
fQogCiAtIChOU0ltYWdlICopX2ljb25Gb3JGaWxlVVJMOihOU1N0cmluZyAqKWZpbGUgd2l0aFNp
emU6KE5TU2l6ZSlzaXplCkBAIC0zNjYsNyArMzY2LDcgQEAgLSAoTlNJbWFnZSAqKV9pY29uRm9y
RmlsZVVSTDooTlNTdHJpbmcgKgogLSAodm9pZClfcmVzZXRDYWNoZWRXZWJQcmVmZXJlbmNlczoo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKICAgICBCT09MIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWROb3cgPSBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHByaXZh
dGVCcm93c2luZ0VuYWJsZWRdOwotICAgIGljb25EYXRhYmFzZSgpLT5zZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWROb3cpOworICAgIGljb25EYXRhYmFzZSgp
LnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZE5vdyk7CiB9
CiAKIC0gKE5TSW1hZ2UgKilfbGFyZ2VzdEljb25Gcm9tRGljdGlvbmFyeTooTlNNdXRhYmxlRGlj
dGlvbmFyeSAqKWljb25zCkBAIC02MjYsOCArNjI2LDggQEAgYm9vbCBpbXBvcnRUb1dlYkNvcmVG
b3JtYXQoKQogICAgICAgICBpY29uVVJMID0gW3BhZ2VVUkxUb0ljb25VUkwgb2JqZWN0Rm9yS2V5
OnVybF07CiAgICAgICAgIGlmICghaWNvblVSTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpY29uRGF0YWJhc2UoKS0+aW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoaWNvblVSTCwgdXJs
KTsKLSAgICAgICAgaWYgKGljb25EYXRhYmFzZSgpLT5zaG91bGRTdG9wVGhyZWFkQWN0aXZpdHko
KSkKKyAgICAgICAgaWNvbkRhdGFiYXNlKCkuaW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoaWNvblVS
TCwgdXJsKTsKKyAgICAgICAgaWYgKGljb25EYXRhYmFzZSgpLnNob3VsZFN0b3BUaHJlYWRBY3Rp
dml0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gICAgCiAKQEAgLTY0MCwx
NCArNjQwLDE0IEBAIGJvb2wgaW1wb3J0VG9XZWJDb3JlRm9ybWF0KCkKICAgICB3aGlsZSAoKHVy
bCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwpIHsKICAgICAgICAgaWNvbkRhdGEg
PSBpY29uRGF0YUZyb21QYXRoRm9ySWNvblVSTChkYXRhYmFzZURpcmVjdG9yeSwgdXJsKTsKICAg
ICAgICAgaWYgKGljb25EYXRhKQotICAgICAgICAgICAgaWNvbkRhdGFiYXNlKCktPmltcG9ydElj
b25EYXRhRm9ySWNvblVSTChTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoaWNvbkRhdGEpLCB1cmwp
OworICAgICAgICAgICAgaWNvbkRhdGFiYXNlKCkuaW1wb3J0SWNvbkRhdGFGb3JJY29uVVJMKFNo
YXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShpY29uRGF0YSksIHVybCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgLy8gVGhpcyByZWFsbHkgKnNob3VsZG4ndCogaGFwcGVuLCBzbyBpdCdkIGJl
IGdvb2QgdG8gdHJhY2sgZG93biB3aHkgaXQgbWlnaHQgaGFwcGVuIGluIGEgZGVidWcgYnVpbGQK
ICAgICAgICAgICAgIC8vIGhvd2V2ZXIsIHdlIGRvIGtub3cgaG93IHRvIGhhbmRsZSBpdCBncmFj
ZWZ1bGx5IGluIHJlbGVhc2UKICAgICAgICAgICAgIExPR19FUlJPUigiJUAgaXMgbWFya2VkIGFz
IGhhdmluZyBhbiBpY29uIG9uIGRpc2ssIGJ1dCB3ZSBjb3VsZG4ndCBnZXQgdGhlIGRhdGEgZm9y
IGl0IiwgdXJsKTsKLSAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5pbXBvcnRJY29uRGF0YUZv
ckljb25VUkwoMCwgdXJsKTsKKyAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLmltcG9ydEljb25E
YXRhRm9ySWNvblVSTCgwLCB1cmwpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpY29uRGF0YWJh
c2UoKS0+c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkpCisgICAgICAgIGlmIChpY29uRGF0YWJh
c2UoKS5zaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCkBAIC02NTYsNyArNjU2LDcgQEAgYm9vbCBpbXBvcnRUb1dlYkNvcmVG
b3JtYXQoKQogICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdOwogICAgIGVudW1lcmF0b3IgPSBbW2ZpbGVNYW5hZ2VyIGNvbnRlbnRz
T2ZEaXJlY3RvcnlBdFBhdGg6ZGF0YWJhc2VEaXJlY3RvcnkgZXJyb3I6TlVMTF0gb2JqZWN0RW51
bWVyYXRvcl07CiAKLSAgICBOU1N0cmluZyAqZGF0YWJhc2VGaWxlbmFtZSA9IGljb25EYXRhYmFz
ZSgpLT5kZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpOworICAgIE5TU3RyaW5nICpkYXRhYmFzZUZp
bGVuYW1lID0gaWNvbkRhdGFiYXNlKCkuZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKTsKIAogICAg
IEJPT0wgZm91bmRJY29uREIgPSBOTzsKICAgICBOU1N0cmluZyAqZmlsZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDgwMjkzKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01ODQ3LDcgKzU4
NDcsNyBAQCAtICh2b2lkKV9kaXNwYXRjaERpZFJlY2VpdmVJY29uRnJvbVdlYkZyCiAKICAgICBX
ZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGNhY2hlID0gJl9wcml2YXRl
LT5mcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uczsKICAgICBpZiAoY2FjaGUtPmRpZFJl
Y2VpdmVJY29uRm9yRnJhbWVGdW5jKSB7Ci0gICAgICAgIEltYWdlKiBpbWFnZSA9IGljb25EYXRh
YmFzZSgpLT5pY29uRm9yUGFnZVVSTChjb3JlKHdlYkZyYW1lKS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCksIEludFNpemUoMTYsIDE2KSk7CisgICAgICAgIEltYWdlKiBpbWFnZSA9IGljb25E
YXRhYmFzZSgpLmljb25Gb3JQYWdlVVJMKGNvcmUod2ViRnJhbWUpLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSwgSW50U2l6ZSgxNiwgMTYpKTsKICAgICAgICAgaWYgKE5TSW1hZ2UgKmljb24g
PSB3ZWJHZXROU0ltYWdlKGltYWdlLCBOU01ha2VTaXplKDE2LCAxNikpKQogICAgICAgICAgICAg
Q2FsbEZyYW1lTG9hZERlbGVnYXRlKGNhY2hlLT5kaWRSZWNlaXZlSWNvbkZvckZyYW1lRnVuYywg
c2VsZiwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6KSwgaWNvbiwg
d2ViRnJhbWUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDI5NSkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDMtMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcyMQorICAgICAgICBHbG9iYWwgSWNvbkRhdGFi
YXNlIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UsIG5vdCBhcyBhIHBvaW50ZXIKKwor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpz
ZXRJY29uRGF0YWJhc2VQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNl
UGF0aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFiYXNlKToKKyAgICAg
ICAgKFFXZWJTZXR0aW5nczo6aWNvbkZvclVybCk6CisKIDIwMTEtMDMtMDMgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZpbmcgYW4gaW5jbHVkZSBv
ZiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCB0aGF0IEl2ZSBqdXN0IGFkZGVkLiBJdCdzIGFscmVh
ZHkgaW5jbHVkZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2
aXNpb24gODAyOTMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NDUsMTYgKzY0NSwxNiBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6
ZGVmYXVsdFRleHRFbmNvZGluCiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldEljb25EYXRhYmFz
ZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKIHsKLSAgICBXZWJDb3JlOjppY29uRGF0YWJhc2Uo
KS0+ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKKyAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5k
ZWxheURhdGFiYXNlQ2xlYW51cCgpOwogCiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkgewotICAg
ICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS0+c2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAg
V2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZCh0cnVlKTsKICAgICAgICAgUUZpbGVJ
bmZvIGluZm8ocGF0aCk7CiAgICAgICAgIGlmIChpbmZvLmlzRGlyKCkgJiYgaW5mby5pc1dyaXRh
YmxlKCkpCi0gICAgICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS0+b3BlbihwYXRoKTsK
KyAgICAgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLm9wZW4ocGF0aCk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPnNldEVuYWJsZWQoZmFsc2Up
OwotICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS0+Y2xvc2UoKTsKKyAgICAgICAgV2Vi
Q29yZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIFdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLmNsb3NlKCk7CiAgICAgfQogfQogCkBAIC02NjYsOCArNjY2LDggQEAg
dm9pZCBRV2ViU2V0dGluZ3M6OnNldEljb25EYXRhYmFzZVBhdGgoYwogKi8KIFFTdHJpbmcgUVdl
YlNldHRpbmdzOjppY29uRGF0YWJhc2VQYXRoKCkKIHsKLSAgICBpZiAoV2ViQ29yZTo6aWNvbkRh
dGFiYXNlKCktPmlzRW5hYmxlZCgpICYmIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pc09wZW4o
KSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5kYXRhYmFzZVBhdGgo
KTsKKyAgICBpZiAoV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkgJiYgV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuaXNPcGVuKCkpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5kYXRhYmFzZVBhdGgoKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBRU3Ry
aW5nKCk7CiB9CkBAIC02NzcsOCArNjc3LDggQEAgUVN0cmluZyBRV2ViU2V0dGluZ3M6Omljb25E
YXRhYmFzZVBhdGgoKQogKi8KIHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgp
CiB7Ci0gICAgaWYgKFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pc0VuYWJsZWQoKSAmJiBXZWJD
b3JlOjppY29uRGF0YWJhc2UoKS0+aXNPcGVuKCkpCi0gICAgICAgIFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLT5yZW1vdmVBbGxJY29ucygpOworICAgIGlmIChXZWJDb3JlOjppY29uRGF0YWJhc2Uo
KS5pc0VuYWJsZWQoKSAmJiBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc09wZW4oKSkKKyAgICAg
ICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkucmVtb3ZlQWxsSWNvbnMoKTsKIH0KIAogLyohCkBA
IC02OTMsNyArNjkzLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFiYXNlKCkK
ICovCiBRSWNvbiBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJsKQogewot
ICAgIFdlYkNvcmU6OkltYWdlKiBpbWFnZSA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLT5pY29u
Rm9yUGFnZVVSTChXZWJDb3JlOjpLVVJMKHVybCkuc3RyaW5nKCksCisgICAgV2ViQ29yZTo6SW1h
Z2UqIGltYWdlID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaWNvbkZvclBhZ2VVUkwoV2ViQ29y
ZTo6S1VSTCh1cmwpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
biBRUGl4bWFwKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDI5NSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDExLTAzLTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3MjEKKyAgICAgICAgR2xvYmFsIEljb25EYXRhYmFz
ZSBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNlLCBub3QgYXMgYSBwb2ludGVyCisKKyAg
ICAgICAgKiBXZWJDb3JlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGlj
czo6aWNvblBhZ2VVUkxNYXBwaW5nQ291bnQpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6
Omljb25SZXRhaW5lZFBhZ2VVUkxDb3VudCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6
aWNvblJlY29yZENvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjppY29uc1dpdGhE
YXRhQ291bnQpOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJJ
Y29uRGF0YWJhc2U6OmluaXQpOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjpzdGFydFVwSWNv
bkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkljb25EYXRhYmFzZTo6aWNvbkZvclVSTCk6CisgICAg
ICAgIChXZWJJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JVUkwpOgorICAgICAgICAoV2ViSWNv
bkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclVSTCk6CisgICAgICAgIChXZWJJY29uRGF0YWJhc2U6
OnJlbW92ZUFsbEljb25zKToKKyAgICAgICAgKFdlYkljb25EYXRhYmFzZTo6aWNvblVSTEZvclVS
TCk6CisgICAgICAgIChXZWJJY29uRGF0YWJhc2U6OmlzRW5hYmxlZCk6CisgICAgICAgIChXZWJJ
Y29uRGF0YWJhc2U6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjpoYXNJ
Y29uRm9yVVJMKToKKyAgICAgICAgKFdlYkljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGVEZWZhdWx0
SWNvbkJpdG1hcCk6CisgICAgICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKHNodXREb3du
V2ViS2l0KToKKwogMjAxMS0wMy0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmluZyBhbiBpbmNsdWRlIG9mIFdlYkNvcmVLZXlib2FyZFVJTW9k
ZS5oIHRoYXQgSXZlIGp1c3QgYWRkZWQuIEl0J3MgYWxyZWFkeSBpbmNsdWRlZApJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gODAyOTMpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Niw3ICsxNTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0
CiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291
bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCktPnBhZ2VVUkxNYXBwaW5nQ291bnQoKTsKKyAgICAq
Y291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCkucGFnZVVSTE1hcHBpbmdDb3VudCgpOwogICAg
IHJldHVybiBTX09LOwogfQogCkBAIC0xNjUsNyArMTY1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJDb3JlU3RhdGlzdAogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIGljb25EYXRhYmFzZSgpLT5yZXRhaW5l
ZFBhZ2VVUkxDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKSBpY29uRGF0YWJhc2UoKS5yZXRh
aW5lZFBhZ2VVUkxDb3VudCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xNzQsNyArMTc0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdAogewogICAgIGlm
ICghY291bnQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQp
IGljb25EYXRhYmFzZSgpLT5pY29uUmVjb3JkQ291bnQoKTsKKyAgICAqY291bnQgPSAoVUlOVCkg
aWNvbkRhdGFiYXNlKCkuaWNvblJlY29yZENvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
QEAgLTE4Myw3ICsxODMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0
aXN0CiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAq
Y291bnQgPSAoVUlOVCkgaWNvbkRhdGFiYXNlKCktPmljb25SZWNvcmRDb3VudFdpdGhEYXRhKCk7
CisgICAgKmNvdW50ID0gKFVJTlQpIGljb25EYXRhYmFzZSgpLmljb25SZWNvcmRDb3VudFdpdGhE
YXRhKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
Ykljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViSWNv
bkRhdGFiYXNlLmNwcAkocmV2aXNpb24gODAyOTMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJJ
Y29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2Vi
SWNvbkRhdGFiYXNlOjppbml0KCkKICAgICAgICAgZW5hYmxlZCA9IEZBTFNFOwogICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBnZXQgaWNvbiBkYXRhYmFzZSBlbmFibGVkIHByZWZlcmVuY2Ui
KTsKICAgICB9Ci0gICAgaWNvbkRhdGFiYXNlKCktPnNldEVuYWJsZWQoISFlbmFibGVkKTsKKyAg
ICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKCEhZW5hYmxlZCk7CiAgICAgaWYgKCEoISFlbmFi
bGVkKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgV2ViSWNvbkRh
dGFiYXNlOjpzdGFydFVwSWNvbkRhdGFiYXMKIHsKICAgICBXZWJQcmVmZXJlbmNlcyogc3RhbmRh
cmRQcmVmcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCk7CiAK
LSAgICBpY29uRGF0YWJhc2UoKS0+c2V0Q2xpZW50KHRoaXMpOworICAgIGljb25EYXRhYmFzZSgp
LnNldENsaWVudCh0aGlzKTsKIAogICAgIEJTVFIgcHJlZkRhdGFiYXNlUGF0aCA9IDA7CiAgICAg
aWYgKEZBSUxFRChzdGFuZGFyZFByZWZzLT5pY29uRGF0YWJhc2VMb2NhdGlvbigmcHJlZkRhdGFi
YXNlUGF0aCkpKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c3RhcnRV
cEljb25EYXRhYmFzCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjb25zdHJ1Y3Qg
ZGVmYXVsdCBpY29uIGRhdGFiYXNlIHBhdGgiKTsKICAgICB9CiAKLSAgICBpZiAoIWljb25EYXRh
YmFzZSgpLT5vcGVuKGRhdGFiYXNlUGF0aCkpCisgICAgaWYgKCFpY29uRGF0YWJhc2UoKS5vcGVu
KGRhdGFiYXNlUGF0aCkpCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGlj
b24gZGF0YWJhc2UgcGF0aCIpOwogfQogCkBAIC0xNzIsNyArMTcyLDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhcwogCiAgICAgSW1hZ2UqIGljb24gPSAwOwogICAg
IGlmICh1cmwpCi0gICAgICAgIGljb24gPSBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwo
U3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpLCBpbnRTaXplKTsKKyAgICAgICAgaWNvbiA9
IGljb25EYXRhYmFzZSgpLmljb25Gb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1
cmwpKSwgaW50U2l6ZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgY2hlY2sgZm9yIHRoZSBjYXNl
IG9mIGFuICJlbXB0eSBpbWFnZSIKICAgICBpZiAoaWNvbiAmJiBpY29uLT53aWR0aCgpKSB7CkBA
IC0xOTksMjAgKzE5OSwyMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRh
YmFzCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzZTo6cmV0YWluSWNv
bkZvclVSTCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCkKIHsKLSAgICBpY29uRGF0YWJh
c2UoKS0+cmV0YWluSWNvbkZvclBhZ2VVUkwoU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkp
KTsKKyAgICBpY29uRGF0YWJhc2UoKS5yZXRhaW5JY29uRm9yUGFnZVVSTChTdHJpbmcodXJsLCBT
eXNTdHJpbmdMZW4odXJsKSkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzZTo6cmVsZWFzZUljb25Gb3JVUkwoCiAgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiB1cmwpCiB7Ci0gICAgaWNvbkRhdGFiYXNlKCktPnJlbGVhc2VJY29u
Rm9yUGFnZVVSTChTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJsKSkpOworICAgIGljb25EYXRh
YmFzZSgpLnJlbGVhc2VJY29uRm9yUGFnZVVSTChTdHJpbmcodXJsLCBTeXNTdHJpbmdMZW4odXJs
KSkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
Ykljb25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnModm9pZCkKIHsKLSAgICBpY29uRGF0YWJhc2Uo
KS0+cmVtb3ZlQWxsSWNvbnMoKTsKKyAgICBpY29uRGF0YWJhc2UoKS5yZW1vdmVBbGxJY29ucygp
OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0yMzQsNyArMjM0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhcwogewogICAgIGlmICghdXJsIHx8ICFpY29uVVJM
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgIEJTdHJpbmcgaWNvblVSTEJTVFIoaWNv
bkRhdGFiYXNlKCktPmljb25VUkxGb3JQYWdlVVJMKFN0cmluZyh1cmwsIFN5c1N0cmluZ0xlbih1
cmwpKSkpOworICAgIEJTdHJpbmcgaWNvblVSTEJTVFIoaWNvbkRhdGFiYXNlKCkuaWNvblVSTEZv
clBhZ2VVUkwoU3RyaW5nKHVybCwgU3lzU3RyaW5nTGVuKHVybCkpKSk7CiAgICAgKmljb25VUkwg
PSBpY29uVVJMQlNUUi5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yNDIsNyAr
MjQyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhcwogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJJY29uRGF0YWJhc2U6OmlzRW5hYmxlZCggCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KQogewotICAgICpyZXN1bHQgPSBpY29u
RGF0YWJhc2UoKS0+aXNFbmFibGVkKCk7CisgICAgKnJlc3VsdCA9IGljb25EYXRhYmFzZSgpLmlz
RW5hYmxlZCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0yNTIsMTAgKzI1MiwxMCBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzCiAgICAgQk9PTCBjdXJyZW50
bHlFbmFibGVkOwogICAgIGlzRW5hYmxlZCgmY3VycmVudGx5RW5hYmxlZCk7CiAgICAgaWYgKGN1
cnJlbnRseUVuYWJsZWQgJiYgIWZsYWcpIHsKLSAgICAgICAgaWNvbkRhdGFiYXNlKCktPnNldEVu
YWJsZWQoZmFsc2UpOworICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKGZhbHNlKTsK
ICAgICAgICAgc2h1dERvd25JY29uRGF0YWJhc2UoKTsKICAgICB9IGVsc2UgaWYgKCFjdXJyZW50
bHlFbmFibGVkICYmIGZsYWcpIHsKLSAgICAgICAgaWNvbkRhdGFiYXNlKCktPnNldEVuYWJsZWQo
dHJ1ZSk7CisgICAgICAgIGljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgICAg
IHN0YXJ0VXBJY29uRGF0YWJhc2UoKTsKICAgICB9CiAgICAgcmV0dXJuIFNfT0s7CkBAIC0yNzIs
MTEgKzI3MiwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkljb25EYXRhYmFzCiAK
ICAgICAvLyBQYXNzaW5nIGEgc2l6ZSBwYXJhbWV0ZXIgb2YgMCwgMCBtZWFucyB3ZSBkb24ndCBj
YXJlIGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGltYWdlLCB3ZSBqdXN0CiAgICAgLy8gd2FudCB0
byBtYWtlIHN1cmUgdGhlIHJlYWQgZnJvbSBkaXNrIHRvIGxvYWQgdGhlIGljb24gaXMga2lja2Vk
IG9mZi4KLSAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwodXJsU3RyaW5nLCBJbnRT
aXplKDAsIDApKTsKKyAgICBpY29uRGF0YWJhc2UoKS5pY29uRm9yUGFnZVVSTCh1cmxTdHJpbmcs
IEludFNpemUoMCwgMCkpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSBub24t
ZW1wdHkgaWNvbiBVUkwgZm9yIHRoZSBwYWdlLCBhbmQgaWYgd2UgZG8sIHdlIGhhdmUgYW4gaWNv
biBmb3IKICAgICAvLyB0aGUgcGFnZS4KLSAgICAqcmVzdWx0ID0gIShpY29uRGF0YWJhc2UoKS0+
aWNvblVSTEZvclBhZ2VVUkwodXJsU3RyaW5nKS5pc0VtcHR5KCkpOworICAgICpyZXN1bHQgPSAh
KGljb25EYXRhYmFzZSgpLmljb25VUkxGb3JQYWdlVVJMKHVybFN0cmluZykuaXNFbXB0eSgpKTsK
IAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIEhCSVRNQVAgV2ViSWNv
bkRhdGFiYXNlOjpnZXRPckNyZWF0ZURlZmEKICAgICByZXN1bHQgPSBjcmVhdGVESUIoc2l6ZSk7
CiAKICAgICBtX2RlZmF1bHRJY29uTWFwLnNldCgqc2l6ZSwgcmVzdWx0KTsKLSAgICBpZiAoIWlj
b25EYXRhYmFzZSgpLT5kZWZhdWx0SWNvbigqc2l6ZSktPmdldEhCSVRNQVBPZlNpemUocmVzdWx0
LCBzaXplKSkgeworICAgIGlmICghaWNvbkRhdGFiYXNlKCkuZGVmYXVsdEljb24oKnNpemUpLT5n
ZXRIQklUTUFQT2ZTaXplKHJlc3VsdCwgc2l6ZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gZHJhdyBJbWFnZSB0byBIQklUTUFQIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdERMTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViS2l0RExMLmNwcAkocmV2aXNpb24gODAyOTMpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXRETEwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcg
QEAgU1REQVBJIExvY2FsU2VydmVyRGlkRGllKCkKIAogdm9pZCBzaHV0RG93bldlYktpdCgpCiB7
Ci0gICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCktPmNsb3NlKCk7CisgICAgV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCkuY2xvc2UoKTsKICAgICBXZWJDb3JlOjpQYWdlR3JvdXA6OmNsb3NlTG9jYWxT
dG9yYWdlKCk7CiB9CiAK
</data>
<flag name="review"
          id="76669"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="76670"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>