<?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>150919</bug_id>
          
          <creation_ts>2015-11-04 19:10:54 -0800</creation_ts>
          <short_desc>[JSC] Add B3-to-Air lowering for the shift opcodes</short_desc>
          <delta_ts>2015-11-04 21:50:53 -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>WebKit 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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139520</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-04 19:10:54 -0800</bug_when>
    <thetext>[JSC] Add B3-to-Air lowering for the shift opcodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139521</commentid>
    <comment_count>1</comment_count>
      <attachid>264835</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-04 19:11:16 -0800</bug_when>
    <thetext>Created attachment 264835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139546</commentid>
    <comment_count>2</comment_count>
      <attachid>264835</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-04 20:33:41 -0800</bug_when>
    <thetext>Comment on attachment 264835
Patch

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

&gt; Source/JavaScriptCore/b3/B3Const32Value.cpp:105
&gt; +Value* Const32Value::shlConstant(Procedure&amp; proc, Value* other) const
&gt; +{
&gt; +    if (!other-&gt;hasInt32())
&gt; +        return nullptr;
&gt; +    return proc.add&lt;Const32Value&gt;(origin(), m_value &lt;&lt; other-&gt;asInt32());
&gt; +}
&gt; +
&gt; +Value* Const32Value::sShrConstant(Procedure&amp; proc, Value* other) const
&gt; +{
&gt; +    if (!other-&gt;hasInt32())
&gt; +        return nullptr;
&gt; +    return proc.add&lt;Const32Value&gt;(origin(), m_value &gt;&gt; other-&gt;asInt32());
&gt; +}
&gt; +
&gt; +Value* Const32Value::zShrConstant(Procedure&amp; proc, Value* other) const
&gt; +{
&gt; +    if (!other-&gt;hasInt32())
&gt; +        return nullptr;
&gt; +    return proc.add&lt;Const32Value&gt;(origin(), static_cast&lt;int32_t&gt;(static_cast&lt;uint32_t&gt;(m_value) &gt;&gt; other-&gt;asInt32()));
&gt; +}
&gt; +

You should explicitly mask the shift amount.

I propose that we define shifts in B3 to be defined so that:

    Shl(a, b)

where a is In32 is:

    a &lt;&lt; (b &amp; 31)

and where a is Int64 it&apos;s:

    a &lt;&lt; (b &amp; 63)

The reason why this is important is that this matches exactly what X86_64 and ARM do, and it&apos;s what FTL lowering will expect.

But in C, the upper bits of the shit amount have an undefined effect on the outcome of the shift.

Therefore, when using C code to fold shifts, we need to mask.

And of course I had to file: https://bugs.webkit.org/show_bug.cgi?id=150924</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139554</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-04 21:50:53 -0800</bug_when>
    <thetext>Committed r192051: &lt;http://trac.webkit.org/changeset/192051&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264835</attachid>
            <date>2015-11-04 19:11:16 -0800</date>
            <delta_ts>2015-11-04 20:33:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150919-20151104191018.patch</filename>
            <type>text/plain</type>
            <size>31261</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDE2NWFjNjEwY2Y0ODFiMDU5OGNjNjNlNTUwZWRhMmU3OGE0ZTQzLi4xM2VkMTAxMDViZjM0Zjhm
YjhhZDU1MDUwMjRhNDYwYjhhOTYzZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNS0xMS0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQjMtdG8tQWlyIGxvd2VyaW5nIGZvciB0aGUgc2hp
ZnQgb3Bjb2RlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZfNjQ6OnJzaGlmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZfNjQ6OnVyc2hpZnQ2NCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNocnFfQ0xyKToKKyAgICAgICAgKiBiMy9C
M0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OnNobENv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6c1NockNvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6elNockNvbnN0YW50KToKKyAgICAgICAg
KiBiMy9CM0NvbnN0MzJWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6c2hsQ29uc3RhbnQpOgorICAgICAgICAo
SlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjpzU2hyQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3Q2NFZhbHVlOjp6U2hyQ29uc3RhbnQpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVl
Lmg6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6YXBwZW5kU2hpZnQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjp0cnlTaGwpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0cnlT
U2hyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5WlNocik6CisgICAg
ICAgICogYjMvQjNMb3dlcmluZ01hdGNoZXIucGF0dGVybnM6CisgICAgICAgICogYjMvQjNPcGNv
ZGUuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9C
M1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpzaGxDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6c1NockNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjp6U2hyQ29uc3RhbnQpOgorICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBi
My9haXIvQWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNTaGlmdFZh
bGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNSc2hpZnQzMlZhbGlkKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6aXNSc2hpZnQ2NFZhbGlkKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
aXNVcnNoaWZ0MzJWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OmlzVXJzaGlmdDY0VmFs
aWQpOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90
ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNobEFyZ3MpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdFNobEltbXMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNobEFyZ0ltbSk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0U2hsQXJnczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
aGxJbW1zMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNobEFyZ0ltbTMyKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTU2hyQXJncyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U1NockltbXMp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNTaHJBcmdJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdFNTaHJBcmdzMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNTaHJJbW1zMzIpOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdFNTaHJBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
WlNockFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFpTaHJJbW1zKToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RaU2hyQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RaU2hyQXJnczMy
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RaU2hySW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RaU2hyQXJnSW1tMzIpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxNS0xMC0z
MCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
ZW5kbGVzcyBPU1IgZXhpdHMgd2hlbiBjcmVhdGluZyBhIHJvcGUgdGhhdCBjb250YWlucyBhbiBv
YmplY3QgdGhhdCBUb1ByaW1pdGl2ZSdzIHRvIGEgbnVtYmVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDNi
NzBkMzhjMzc0ZDg0ZmZiYWEwN2EzZDFlZGRiZWY1OGI3ODBmNTIuLmQxYzhkZDA4Njc0MDc1MmUz
NGI2NzBkZWQzYzY5OGZhOWFmMTBhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTM0NywxMiArMzQ3LDQw
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNhcnFfaThyKGltbS5tX3Zh
bHVlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHJzaGlmdDY0KFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoc3JjICE9IGRlc3Qp
OworCisgICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0ZXJzOjplY3gpCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zYXJxX0NMcihkZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAv
LyBDYW4gb25seSBzaGlmdCBieSBlY3gsIHNvIHdlIGRvIHNvbWUgc3dhcHBpbmcgaWYgd2Ugc2Vl
IGFueXRoaW5nIGVsc2UuCisgICAgICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2FycV9DTHIoZGVzdCk7CisgICAgICAgICAgICBz
d2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9p
ZCB1cnNoaWZ0NjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc2hycV9pOHIoaW1tLm1fdmFsdWUsIGRlc3QpOwogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgdXJzaGlmdDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoc3JjICE9IGRlc3QpOworCisgICAgICAgIGlmIChzcmMg
PT0gWDg2UmVnaXN0ZXJzOjplY3gpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zaHJxX0NMcihk
ZXN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBDYW4gb25seSBzaGlmdCBieSBl
Y3gsIHNvIHdlIGRvIHNvbWUgc3dhcHBpbmcgaWYgd2Ugc2VlIGFueXRoaW5nIGVsc2UuCisgICAg
ICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc2hycV9DTHIoZGVzdCk7CisgICAgICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJz
OjplY3gpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBtdWw2NChSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuaW11bHFfcnIo
c3JjLCBkZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCmluZGV4IDQ4MmU2ZmE4OTRjMWEzNjE4M2ZiOWYyOWNjMWU1NGMzNWE3YzQ2NjcuLmFi
YmYyZTM2ZjczYzViNjNkMzBmNTk5NWQzZTRmYTBjYzU1YzI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtOTAxLDYgKzkwMSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHNocnFfQ0xyKFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAy
X0V2Q0wsIEdST1VQMl9PUF9TSFIsIGRzdCk7CisgICAgfQorCiAgICAgdm9pZCBzaGxxX2k4cihp
bnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0gPT0gMSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCmluZGV4IGY4NmUzOTc0
NGFlNDZmMGQyNDRiZWQ4NmIxMDQzZWUzYjBlZDBjMWQuLjFkMjI5OTg3YTg0ZTFmMGY2ZTEyMmE4
MjYzZmNjMTNhYjdhNzc3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0MzJWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Qz
MlZhbHVlLmNwcApAQCAtODIsNiArODIsMjcgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6Yml0WG9y
Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJu
IHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgXiBvdGhlci0+YXNJbnQz
MigpKTsKIH0KIAorVmFsdWUqIENvbnN0MzJWYWx1ZTo6c2hsQ29uc3RhbnQoUHJvY2VkdXJlJiBw
cm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1
ZT4ob3JpZ2luKCksIG1fdmFsdWUgPDwgb3RoZXItPmFzSW50MzIoKSk7Cit9CisKK1ZhbHVlKiBD
b25zdDMyVmFsdWU6OnNTaHJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBvdGhlcikg
Y29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgbV92YWx1
ZSA+PiBvdGhlci0+YXNJbnQzMigpKTsKK30KKworVmFsdWUqIENvbnN0MzJWYWx1ZTo6elNockNv
bnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICgh
b3RoZXItPmhhc0ludDMyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBw
cm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPj4gb3RoZXItPmFzSW50MzIoKSkpOworfQorCiBW
YWx1ZSogQ29uc3QzMlZhbHVlOjplcXVhbENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUq
IG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCmluZGV4IDc2ODBmNzA3MTVjMGQ3MWYyNWUx
ZjI2NDhiYzZhOTFjMTg4YzZmMmIuLjY0YWZhNDgzZGQ2NTMzZGJhMGQ0OTNkOTFlOTc1OWFiMGI0
NTJlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCkBAIC00
Nyw2ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJl
JiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0T3JDb25zdGFu
dChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBi
aXRYb3JDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZhbHVlKiBzaGxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZhbHVlKiBzU2hyQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVy
KSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogelNockNvbnN0YW50KFByb2NlZHVyZSYsIFZh
bHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGVxdWFsQ29uc3RhbnQoUHJv
Y2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbm90RXF1
YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAppbmRleCAyMzc3YTk0
OTVlOTFiZWUzZTVhODRkM2IzZDNlNDEyYWUyMTE4MjMwLi45NTE0ZTY5NWQwNjEwOTU2OTQ0NWM3
MjZhZDdjYzU4NjFmZDE4MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdDY0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
NjRWYWx1ZS5jcHAKQEAgLTgyLDYgKzgyLDI3IEBAIFZhbHVlKiBDb25zdDY0VmFsdWU6OmJpdFhv
ckNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVy
biBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlIF4gb3RoZXItPmFzSW50
NjQoKSk7CiB9CiAKK1ZhbHVlKiBDb25zdDY0VmFsdWU6OnNobENvbnN0YW50KFByb2NlZHVyZSYg
cHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFs
dWU+KG9yaWdpbigpLCBtX3ZhbHVlIDw8IG90aGVyLT5hc0ludDMyKCkpOworfQorCitWYWx1ZSog
Q29uc3Q2NFZhbHVlOjpzU2hyQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIp
IGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIG1fdmFs
dWUgPj4gb3RoZXItPmFzSW50MzIoKSk7Cit9CisKK1ZhbHVlKiBDb25zdDY0VmFsdWU6OnpTaHJD
b25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAo
IW90aGVyLT5oYXNJbnQzMigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
cHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpID4+IG90aGVyLT5hc0ludDMyKCkpKTsKK30KKwog
VmFsdWUqIENvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVl
KiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaAppbmRleCAyOWU5ZTJhOTliMWUyOTc1MDRh
MzhlMGJjZGY2YjhlZmZlNzJkZmMzLi5iZmRkOWQyZDViM2UxZDU2NmVjYzJiMGI1NjA4YzJjYWI4
MjczZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFs
dWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaApAQCAt
NDcsNiArNDcsOSBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGJpdEFuZENvbnN0YW50KFByb2NlZHVy
ZSYsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdE9yQ29uc3Rh
bnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSog
Yml0WG9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsK
KyAgICBWYWx1ZSogc2hsQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBv
dmVycmlkZTsKKyAgICBWYWx1ZSogc1NockNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhl
cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIHpTaHJDb25zdGFudChQcm9jZWR1cmUmLCBW
YWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBlcXVhbENvbnN0YW50KFBy
b2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIG5vdEVx
dWFsQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAwY2I4OTQ3NTY1
ZTk2NGM2NGVkYWJhZDQyNjM2MmQzZTJjOGQ4ZTUyLi40N2JiNDhhZGFmMmZhZTE3NWFmMjFjNDc1
ZWYzMDhiYWMyOTVhNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcApAQCAtNzIzLDE5ICs3MjMsMzcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgYm9vbCB0cnlTaGwoVmFsdWUqIHZhbHVlLCBWYWx1ZSogYW1vdW50KQorICAgIHZvaWQgYXBw
ZW5kU2hpZnQoQWlyOjpPcGNvZGUgb3Bjb2RlLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBhbW91bnQp
CiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB2YWx1ZS0+dHlwZSgpID09IElu
dDMyID8gTHNoaWZ0MzIgOiBMc2hpZnQ2NDsKLQogICAgICAgICBpZiAoaW1tKGFtb3VudCkpIHsK
ICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAoY3VycmVudFZhbHVlKSk7
CiAgICAgICAgICAgICBhcHBlbmQob3Bjb2RlLCBpbW0oYW1vdW50KSwgdG1wKGN1cnJlbnRWYWx1
ZSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKHZhbHVlKSwgdG1wKGN1cnJlbnRWYWx1
ZSkpOwogICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKGFtb3VudCksIFRtcChYODZSZWdpc3RlcnM6
OmVjeCkpOwogICAgICAgICBhcHBlbmQob3Bjb2RlLCBUbXAoWDg2UmVnaXN0ZXJzOjplY3gpLCB0
bXAoY3VycmVudFZhbHVlKSk7CisgICAgfQorCisgICAgYm9vbCB0cnlTaGwoVmFsdWUqIHZhbHVl
LCBWYWx1ZSogYW1vdW50KQorICAgIHsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdmFs
dWUtPnR5cGUoKSA9PSBJbnQzMiA/IExzaGlmdDMyIDogTHNoaWZ0NjQ7CisgICAgICAgIGFwcGVu
ZFNoaWZ0KG9wY29kZSwgdmFsdWUsIGFtb3VudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGJvb2wgdHJ5U1NocihWYWx1ZSogdmFsdWUsIFZhbHVlKiBhbW91bnQpCisgICAg
eworICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB2YWx1ZS0+dHlwZSgpID09IEludDMyID8g
UnNoaWZ0MzIgOiBSc2hpZnQ2NDsKKyAgICAgICAgYXBwZW5kU2hpZnQob3Bjb2RlLCB2YWx1ZSwg
YW1vdW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCB0cnlaU2hy
KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFtb3VudCkKKyAgICB7CisgICAgICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZSA9IHZhbHVlLT50eXBlKCkgPT0gSW50MzIgPyBVcnNoaWZ0MzIgOiBVcnNoaWZ0NjQ7
CisgICAgICAgIGFwcGVuZFNoaWZ0KG9wY29kZSwgdmFsdWUsIGFtb3VudCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyaW5nTWF0Y2hlci5wYXR0ZXJucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyaW5nTWF0Y2hlci5wYXR0ZXJucwppbmRleCBjYjc0YjFkODFiOGNmMWFlYzQ2YmJl
NTJiMmQ3YTBhY2E4NzcyYTU5Li41YmIwZjVmMGZlMTJhMjYzZGNmZmFmY2VkY2U4NTNlMDI2NTNl
MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlcmluZ01hdGNo
ZXIucGF0dGVybnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRj
aGVyLnBhdHRlcm5zCkBAIC0zNyw2ICszNyw4IEBAIE9yID0gQml0T3IobGVmdCwgcmlnaHQpCiBY
b3IgPSBCaXRYb3IobGVmdCwgcmlnaHQpCiAKIFNobCA9IFNobCh2YWx1ZSwgYW1vdW50KQorU1No
ciA9IFNTaHIodmFsdWUsIGFtb3VudCkKK1pTaHIgPSBaU2hyKHZhbHVlLCBhbW91bnQpCiAKIFN0
b3JlQWRkTG9hZCA9IFN0b3JlKEFkZChsZWZ0LCByaWdodCksIGFkZHJlc3MpCiBTdG9yZVN1Ykxv
YWQgPSBTdG9yZShTdWIobGVmdCwgcmlnaHQpLCBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuaAppbmRleCAwY2UwOWM2OTZhYWVkMzYzODg3YmEyYTNlNDkzZDNkMGJmOTNkY2U1
Li41NDBiYmU4N2JkZDY5NzQ4OGRkNmE1M2JiOTdiNGE1OTMwOGQ1YmIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaApAQCAtNzYsOCArNzYsOCBAQCBlbnVtIE9wY29kZSA6IGludDE2
X3QgewogICAgIEJpdE9yLAogICAgIEJpdFhvciwKICAgICBTaGwsCi0gICAgU1NociwKLSAgICBa
U2hyLAorICAgIFNTaHIsIC8vIEFyaXRobWV0aWMgU2hpZnQuCisgICAgWlNociwgLy8gTG9naWNh
bCBTaGlmdC4KIAogICAgIC8vIENhc3RzIGFuZCBzdWNoLgogICAgIC8vIFRha2VzIGFuZCByZXR1
cm5zIEludDMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGgu
Y3BwCmluZGV4IDM1NjIwMTM1Y2E0ZThmZTEwNzQxNjJhN2UyMjdiMGQ4ZDJlNzczM2EuLjQxODAx
MTVjZTczZjJlNmVkNWZlNTQ2NTFkNTA3ZmNkNzMwMzYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTI4Myw2ICsyODMsNDUgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBTaGw6CisgICAgICAg
ICAgICAvLyBUdXJuIHRoaXM6IFNobChjb25zdGFudDEsIGNvbnN0YW50MikKKyAgICAgICAgICAg
IC8vIEludG8gdGhpczogY29uc3RhbnQxIDw8IGNvbnN0YW50MgorICAgICAgICAgICAgaWYgKFZh
bHVlKiBjb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDApLT5zaGxDb25zdGFudChtX3Byb2MsIG1f
dmFsdWUtPmNoaWxkKDEpKSkgeworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUo
Y29uc3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaGFuZGxlU2hpZnRCeVplcm8oKSkKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU2hyOgorICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBTU2hyKGNvbnN0YW50MSwgY29uc3RhbnQyKQorICAgICAgICAgICAgLy8g
SW50byB0aGlzOiBjb25zdGFudDEgPj4gY29uc3RhbnQyCisgICAgICAgICAgICBpZiAoVmFsdWUq
IGNvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMCktPnNTaHJDb25zdGFudChtX3Byb2MsIG1fdmFs
dWUtPmNoaWxkKDEpKSkgeworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoY29u
c3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoaGFuZGxlU2hpZnRCeVplcm8oKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBaU2hyOgorICAgICAgICAgICAgLy8g
VHVybiB0aGlzOiBaU2hyKGNvbnN0YW50MSwgY29uc3RhbnQyKQorICAgICAgICAgICAgLy8gSW50
byB0aGlzOiAodW5zaWduZWQpY29uc3RhbnQxID4+IGNvbnN0YW50MgorICAgICAgICAgICAgaWYg
KFZhbHVlKiBjb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDApLT56U2hyQ29uc3RhbnQobV9wcm9j
LCBtX3ZhbHVlLT5jaGlsZCgxKSkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1Zh
bHVlKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGhhbmRsZVNoaWZ0QnlaZXJvKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgTG9hZDhaOgogICAgICAg
ICBjYXNlIExvYWQ4UzoKICAgICAgICAgY2FzZSBMb2FkMTZaOgpAQCAtNDc4LDYgKzUxNywxNyBA
QCBwcml2YXRlOgogICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgIH0KIAorICAgIGJvb2wg
aGFuZGxlU2hpZnRCeVplcm8oKQorICAgIHsKKyAgICAgICAgLy8gU2hpZnQgYW55dGhpbmcgYnkg
emVybyBpcyBpZGVudGl0eS4KKyAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgw
KSkgeworICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5j
aGlsZCgwKSk7CisgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAg
IHZvaWQga2lsbERlYWRDb2RlKCkKICAgICB7CiAgICAgICAgIEdyYXBoTm9kZVdvcmtsaXN0PFZh
bHVlKiwgSW5kZXhTZXQ8VmFsdWU+PiB3b3JrbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmNwcAppbmRleCBjM2IxYmIwZDcyZGQ0NTZmODlkYjdkNTI1NDU4Y2UyZDVhNDZiNjBjLi41
MTc5NTk3MTBhMDdkYjM5YmQwODJlYjY5ZDM3YTVkZWU1MTg4MDIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0xNDcsNiArMTQ3LDIxIEBAIFZhbHVlKiBWYWx1ZTo6Yml0
WG9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqKSBjb25zdAogICAgIHJldHVybiBudWxscHRy
OwogfQogCitWYWx1ZSogVmFsdWU6OnNobENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKikgY29u
c3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworVmFsdWUqIFZhbHVlOjpzU2hyQ29uc3Rh
bnQoUHJvY2VkdXJlJiwgVmFsdWUqKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQor
CitWYWx1ZSogVmFsdWU6OnpTaHJDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSopIGNvbnN0Cit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFZhbHVlKiBWYWx1ZTo6ZXF1YWxDb25zdGFudChQ
cm9jZWR1cmUmLCBWYWx1ZSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaAppbmRleCAzOGU1ZDk0NDUwNzcxNjYzMTQzOTAyYjM5ODIyMmUy
ODk0ZDAyNTE1Li5mNzlmMGU0NzVmNGI0MWIzMTRmMThlNTEzNGNhNDQ5NDJhN2I0OTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTExNSw2ICsxMTUsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVy
KSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZh
bHVlKiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogYml0WG9yQ29uc3RhbnQoUHJv
Y2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlKiBzaGxDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUq
IHNTaHJDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0OworICAgIHZpcnR1
YWwgVmFsdWUqIHpTaHJDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0Owog
ICAgIHZpcnR1YWwgVmFsdWUqIGVxdWFsQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVy
KSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBub3RFcXVhbENvbnN0YW50KFByb2NlZHVyZSYs
IFZhbHVlKiBvdGhlcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlySW5zdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdElubGluZXMuaAppbmRleCA4MDY3MGM2MjYxMWE5Yzg4NzkyMGRkZDQyN2Q0OThhMTdh
M2NhNWFiLi45MTdmNjRjZmJlNTFjMzBmNTJhOTUxODNiOTZjYjVhODlkMzFjZGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC05Niw3ICs5
Niw3IEBAIGlubGluZSBib29sIGlzU2hpZnRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQogICAgIFVO
VVNFRF9QQVJBTShpbnN0KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotfSAgIAorfQogCiBp
bmxpbmUgYm9vbCBpc0xzaGlmdDMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKIHsKQEAgLTEwOCw2
ICsxMDgsMjYgQEAgaW5saW5lIGJvb2wgaXNMc2hpZnQ2NFZhbGlkKGNvbnN0IEluc3QmIGluc3Qp
CiAgICAgcmV0dXJuIGlzU2hpZnRWYWxpZChpbnN0KTsKIH0KIAoraW5saW5lIGJvb2wgaXNSc2hp
ZnQzMlZhbGlkKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgcmV0dXJuIGlzU2hpZnRWYWxpZChp
bnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNSc2hpZnQ2NFZhbGlkKGNvbnN0IEluc3QmIGluc3Qp
Cit7CisgICAgcmV0dXJuIGlzU2hpZnRWYWxpZChpbnN0KTsKK30KKworaW5saW5lIGJvb2wgaXNV
cnNoaWZ0MzJWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc1NoaWZ0VmFs
aWQoaW5zdCk7Cit9CisKK2lubGluZSBib29sIGlzVXJzaGlmdDY0VmFsaWQoY29uc3QgSW5zdCYg
aW5zdCkKK3sKKyAgICByZXR1cm4gaXNTaGlmdFZhbGlkKGluc3QpOworfQorCiB9IH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMzo6QWlyCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggZjI0YWM2
YmJjYjdhZDhkZmRkMWI4OWY3YWY2NDE5ZGVkNDJhNmE4Ni4uNzM1ZjU1YTY5MGMyMTcyYjgyZGIy
MDZhMTYzMWQzZjJiZmIwOTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpck9wY29kZS5vcGNvZGVzCkBAIC0xMTQsNiArMTE0LDI2IEBAIExzaGlmdDMyIFU6RywgVUQ6
RwogICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1wCiAKK0xzaGlmdDY0IFU6RywgVUQ6RworICAg
IFRtcCosIFRtcAorICAgIEltbSwgVG1wCisKK1JzaGlmdDMyIFU6RywgVUQ6RworICAgIFRtcCos
IFRtcAorICAgIEltbSwgVG1wCisKK1JzaGlmdDY0IFU6RywgVUQ6RworICAgIFRtcCosIFRtcAor
ICAgIEltbSwgVG1wCisKK1Vyc2hpZnQzMiBVOkcsIFVEOkcKKyAgICBUbXAqLCBUbXAKKyAgICBJ
bW0sIFRtcAorCitVcnNoaWZ0NjQgVTpHLCBVRDpHCisgICAgVG1wKiwgVG1wCisgICAgSW1tLCBU
bXAKKwogT3IzMiBVOkcsIFVEOkcKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCkBAIC0xMzcs
MTAgKzE1Nyw2IEBAIFhvcjY0IFU6RywgVUQ6RwogICAgIFRtcCwgQWRkcgogICAgIEltbSwgVG1w
CiAKLUxzaGlmdDY0IFU6RywgVUQ6RwotICAgIFRtcCosIFRtcAotICAgIEltbSwgVG1wCi0KIE11
bDMyIFU6RywgVUQ6RwogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCmluZGV4IGJmZDBiNmZkZjYxNzcyNzlhYjJkOTdlOGE4NmU0M2E0MmFk
M2MyOWMuLmQ1NmU3YTgxZjU0ZWRjM2IwYWI0NzJmMzNiZGRlYmU4NWU0ZTUyNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC05NjYsNiArOTY2LDI4MiBAQCB2b2lkIHRlc3RC
aXRYb3JJbW1CaXRYb3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQogICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSBeIChiIF4gYykpKTsKIH0KIAordm9pZCB0
ZXN0U2hsQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgPDwgYikpOworfQorCit2b2lkIHRlc3RT
aGxJbW1zKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Mp
ID09IChhIDw8IGIpKTsKK30KKwordm9pZCB0ZXN0U2hsQXJnSW1tKGludDY0X3QgYSwgaW50NjRf
dCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
IGEpID09IChhIDw8IGIpKTsKK30KKwordm9pZCB0ZXN0U2hsQXJnczMyKGludDMyX3QgYSwgaW50
MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBTaGwsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYSwgYikgPT0gKGEgPDwgYikpOworfQorCit2b2lkIHRlc3RT
aGxJbW1zMzIoaW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YykgPT0gKGEgPDwgYikpOworfQorCit2b2lkIHRlc3RTaGxBcmdJbW0zMihpbnQzMl90IGEsIGlu
dDMyX3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYSkgPT0gKGEgPDwgYikpOworfQorCit2b2lk
IHRlc3RTU2hyQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU1Nociwg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IChhID4+IGIpKTsKK30KKwordm9pZCB0
ZXN0U1NockltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNTaHIsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MpID09IChhID4+IGIpKTsKK30KKwordm9pZCB0ZXN0U1NockFyZ0ltbShpbnQ2NF90IGEs
IGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU1NociwgT3JpZ2luKCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgYSkgPT0gKGEgPj4gYikpOworfQorCit2b2lkIHRlc3RTU2hyQXJnczMyKGludDMy
X3QgYSwgaW50MzJfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTU2hyLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGEsIGIpID09IChhID4+IGIpKTsKK30KKwor
dm9pZCB0ZXN0U1NockltbXMzMihpbnQzMl90IGEsIGludDMyX3QgYikKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
U1NociwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYykgPT0gKGEgPj4gYikpOworfQorCit2b2lkIHRlc3RTU2hyQXJnSW1tMzIo
aW50MzJfdCBhLCBpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNTaHIsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBhKSA9PSAoYSA+PiBi
KSk7Cit9CisKK3ZvaWQgdGVzdFpTaHJBcmdzKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgPj4g
YikpOworfQorCit2b2lkIHRlc3RaU2hySW1tcyh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjx1aW50NjRfdD4ocHJvYykgPT0gKGEgPj4gYikpOworfQorCit2b2lkIHRlc3Ra
U2hyQXJnSW1tKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFpTaHIsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPHVpbnQ2NF90Pihwcm9jLCBhKSA9PSAoYSA+PiBiKSk7Cit9CisKK3Zv
aWQgdGVzdFpTaHJBcmdzMzIodWludDMyX3QgYSwgdWludDMyX3QgYikKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
WlNociwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1aW50MzJfdD4ocHJvYywg
YSwgYikgPT0gKGEgPj4gYikpOworfQorCit2b2lkIHRlc3RaU2hySW1tczMyKHVpbnQzMl90IGEs
IHVpbnQzMl90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFpTaHIsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7
CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVpbnQzMl90Pihwcm9jKSA9PSAoYSA+PiBiKSk7
Cit9CisKK3ZvaWQgdGVzdFpTaHJBcmdJbW0zMih1aW50MzJfdCBhLCB1aW50MzJfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBaU2hyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48dWludDMyX3Q+KHByb2MsIGEpID09IChhID4+IGIpKTsKK30KKwogdm9pZCB0ZXN0U3RvcmUo
aW50IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMjIxOCw2ICsyNDk0LDExNyBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RCaXRYb3JJbW1CaXRY
b3JBcmdJbW0zMig2LCAxLCA2KSk7CiAgICAgUlVOKHRlc3RCaXRYb3JJbW1CaXRYb3JBcmdJbW0z
MigyNCwgMHhmZmZmLCA3KSk7CiAKKyAgICBSVU4odGVzdFNobEFyZ3MoMSwgMCkpOworICAgIFJV
Tih0ZXN0U2hsQXJncygxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdzKDEsIDYyKSk7CisgICAg
UlVOKHRlc3RTaGxBcmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hs
QXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobEFyZ3MoMHhmZmZm
ZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0U2hsSW1tcygxLCAwKSk7CisgICAgUlVO
KHRlc3RTaGxJbW1zKDEsIDEpKTsKKyAgICBSVU4odGVzdFNobEltbXMoMSwgNjIpKTsKKyAgICBS
VU4odGVzdFNobEltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTaGxJ
bW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U2hsSW1tcygweGZmZmZm
ZmZmZmZmZmZmZmYsIDYzKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0oMSwgMCkpOworICAgIFJV
Tih0ZXN0U2hsQXJnSW1tKDEsIDEpKTsKKyAgICBSVU4odGVzdFNobEFyZ0ltbSgxLCA2MikpOwor
ICAgIFJVTih0ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0
ZXN0U2hsQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U2hsQXJn
SW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNobEFyZ3MzMigxLCAw
KSk7CisgICAgUlVOKHRlc3RTaGxBcmdzMzIoMSwgMSkpOworICAgIFJVTih0ZXN0U2hsQXJnczMy
KDEsIDYyKSk7CisgICAgUlVOKHRlc3RTaGxBcmdzMzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJV
Tih0ZXN0U2hsQXJnczMyKDB4ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNobEFyZ3MzMigw
eGZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0U2hsSW1tczMyKDEsIDApKTsKKyAgICBSVU4o
dGVzdFNobEltbXMzMigxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxJbW1zMzIoMSwgNjIpKTsKKyAg
ICBSVU4odGVzdFNobEltbXMzMigweGZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTaGxJbW1z
MzIoMHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U2hsSW1tczMyKDB4ZmZmZmZmZmYsIDYz
KSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCAwKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJ
bW0zMigxLCAxKSk7CisgICAgUlVOKHRlc3RTaGxBcmdJbW0zMigxLCA2MikpOworICAgIFJVTih0
ZXN0U2hsQXJnSW1tMzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tMzIo
MHhmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0U2hsQXJnSW1tMzIoMHhmZmZmZmZmZiwgNjMp
KTsKKworICAgIFJVTih0ZXN0U1NockFyZ3MoMSwgMCkpOworICAgIFJVTih0ZXN0U1NockFyZ3Mo
MSwgMSkpOworICAgIFJVTih0ZXN0U1NockFyZ3MoMSwgNjIpKTsKKyAgICBSVU4odGVzdFNTaHJB
cmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0ZXN0U1NockFyZ3MoMHhmZmZm
ZmZmZmZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RTU2hyQXJncygweGZmZmZmZmZmZmZmZmZm
ZmYsIDYzKSk7CisgICAgUlVOKHRlc3RTU2hySW1tcygxLCAwKSk7CisgICAgUlVOKHRlc3RTU2hy
SW1tcygxLCAxKSk7CisgICAgUlVOKHRlc3RTU2hySW1tcygxLCA2MikpOworICAgIFJVTih0ZXN0
U1NockltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RTU2hySW1tcygw
eGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zKDB4ZmZmZmZmZmZm
ZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNTaHJBcmdJbW0oMSwgMCkpOworICAgIFJVTih0
ZXN0U1NockFyZ0ltbSgxLCAxKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tKDEsIDYyKSk7Cisg
ICAgUlVOKHRlc3RTU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMCkpOworICAgIFJVTih0
ZXN0U1NockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJB
cmdJbW0oMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0U1NockFyZ3MzMigx
LCAwKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnczMyKDEsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJB
cmdzMzIoMSwgNjIpKTsKKyAgICBSVU4odGVzdFNTaHJBcmdzMzIoMHhmZmZmZmZmZiwgMCkpOwor
ICAgIFJVTih0ZXN0U1NockFyZ3MzMigweGZmZmZmZmZmLCAxKSk7CisgICAgUlVOKHRlc3RTU2hy
QXJnczMyKDB4ZmZmZmZmZmYsIDYzKSk7CisgICAgUlVOKHRlc3RTU2hySW1tczMyKDEsIDApKTsK
KyAgICBSVU4odGVzdFNTaHJJbW1zMzIoMSwgMSkpOworICAgIFJVTih0ZXN0U1NockltbXMzMigx
LCA2MikpOworICAgIFJVTih0ZXN0U1NockltbXMzMigweGZmZmZmZmZmLCAwKSk7CisgICAgUlVO
KHRlc3RTU2hySW1tczMyKDB4ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJJbW1zMzIo
MHhmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFNTaHJBcmdJbW0zMigxLCAwKSk7CisgICAg
UlVOKHRlc3RTU2hyQXJnSW1tMzIoMSwgMSkpOworICAgIFJVTih0ZXN0U1NockFyZ0ltbTMyKDEs
IDYyKSk7CisgICAgUlVOKHRlc3RTU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgMCkpOworICAgIFJV
Tih0ZXN0U1NockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFNTaHJBcmdJ
bW0zMigweGZmZmZmZmZmLCA2MykpOworCisgICAgUlVOKHRlc3RaU2hyQXJncygxLCAwKSk7Cisg
ICAgUlVOKHRlc3RaU2hyQXJncygxLCAxKSk7CisgICAgUlVOKHRlc3RaU2hyQXJncygxLCA2Mikp
OworICAgIFJVTih0ZXN0WlNockFyZ3MoMHhmZmZmZmZmZmZmZmZmZmZmLCAwKSk7CisgICAgUlVO
KHRlc3RaU2hyQXJncygweGZmZmZmZmZmZmZmZmZmZmYsIDEpKTsKKyAgICBSVU4odGVzdFpTaHJB
cmdzKDB4ZmZmZmZmZmZmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zKDEsIDAp
KTsKKyAgICBSVU4odGVzdFpTaHJJbW1zKDEsIDEpKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zKDEs
IDYyKSk7CisgICAgUlVOKHRlc3RaU2hySW1tcygweGZmZmZmZmZmZmZmZmZmZmYsIDApKTsKKyAg
ICBSVU4odGVzdFpTaHJJbW1zKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkpOworICAgIFJVTih0ZXN0
WlNockltbXMoMHhmZmZmZmZmZmZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0WlNockFyZ0lt
bSgxLCAwKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tKDEsIDEpKTsKKyAgICBSVU4odGVzdFpT
aHJBcmdJbW0oMSwgNjIpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0oMHhmZmZmZmZmZmZmZmZm
ZmZmLCAwKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tKDB4ZmZmZmZmZmZmZmZmZmZmZiwgMSkp
OworICAgIFJVTih0ZXN0WlNockFyZ0ltbSgweGZmZmZmZmZmZmZmZmZmZmYsIDYzKSk7CisgICAg
UlVOKHRlc3RaU2hyQXJnczMyKDEsIDApKTsKKyAgICBSVU4odGVzdFpTaHJBcmdzMzIoMSwgMSkp
OworICAgIFJVTih0ZXN0WlNockFyZ3MzMigxLCA2MikpOworICAgIFJVTih0ZXN0WlNockFyZ3Mz
MigweGZmZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnczMyKDB4ZmZmZmZmZmYsIDEp
KTsKKyAgICBSVU4odGVzdFpTaHJBcmdzMzIoMHhmZmZmZmZmZiwgNjMpKTsKKyAgICBSVU4odGVz
dFpTaHJJbW1zMzIoMSwgMCkpOworICAgIFJVTih0ZXN0WlNockltbXMzMigxLCAxKSk7CisgICAg
UlVOKHRlc3RaU2hySW1tczMyKDEsIDYyKSk7CisgICAgUlVOKHRlc3RaU2hySW1tczMyKDB4ZmZm
ZmZmZmYsIDApKTsKKyAgICBSVU4odGVzdFpTaHJJbW1zMzIoMHhmZmZmZmZmZiwgMSkpOworICAg
IFJVTih0ZXN0WlNockltbXMzMigweGZmZmZmZmZmLCA2MykpOworICAgIFJVTih0ZXN0WlNockFy
Z0ltbTMyKDEsIDApKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0zMigxLCAxKSk7CisgICAgUlVO
KHRlc3RaU2hyQXJnSW1tMzIoMSwgNjIpKTsKKyAgICBSVU4odGVzdFpTaHJBcmdJbW0zMigweGZm
ZmZmZmZmLCAwKSk7CisgICAgUlVOKHRlc3RaU2hyQXJnSW1tMzIoMHhmZmZmZmZmZiwgMSkpOwor
ICAgIFJVTih0ZXN0WlNockFyZ0ltbTMyKDB4ZmZmZmZmZmYsIDYzKSk7CisKICAgICBSVU4odGVz
dFN0b3JlKDQ0KSk7CiAgICAgUlVOKHRlc3RTdG9yZUNvbnN0YW50KDQ5KSk7CiAgICAgUlVOKHRl
c3RTdG9yZUNvbnN0YW50UHRyKDQ5KSk7Cg==
</data>
<flag name="review"
          id="289940"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>