<?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>212230</bug_id>
          
          <creation_ts>2020-05-21 14:07:35 -0700</creation_ts>
          <short_desc>Use an OptionSet instead of uint8_t for MessageFlags</short_desc>
          <delta_ts>2020-05-21 15:30:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655067</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 14:07:35 -0700</bug_when>
    <thetext>Use an OptionSet instead of uint8_t for MessageFlags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655069</commentid>
    <comment_count>1</comment_count>
      <attachid>399979</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 14:10:21 -0700</bug_when>
    <thetext>Created attachment 399979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655070</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 14:10:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/63496543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655080</commentid>
    <comment_count>3</comment_count>
      <attachid>399979</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-21 14:28:40 -0700</bug_when>
    <thetext>Comment on attachment 399979
Patch

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

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.h:58
&gt; +        encoder &lt;&lt; (static_cast&lt;typename OptionSet&lt;T&gt;::StorageType&gt;(optionSet.toRaw()));

I don’t think the static_cast is needed any more here. OptionSet::toRaw already returns this type. Could just be:

    encoder &lt;&lt; optionSet.toRaw();

&gt; Source/WebKit/Platform/IPC/Decoder.cpp:29
&gt; +#include &quot;ArgumentCoders.h&quot;

Don’t understand why this is now needed and wasn&apos;t before, but I assume there’s a reason.

&gt; Source/WebKit/Platform/IPC/Encoder.cpp:117
&gt; -        *buffer() |= DispatchMessageWhenWaitingForUnboundedSyncReply;
&gt; -        *buffer() &amp;= ~DispatchMessageWhenWaitingForSyncReply;
&gt; +        messageFlags().remove(MessageFlags::DispatchMessageWhenWaitingForSyncReply);
&gt; +        messageFlags().add(MessageFlags::DispatchMessageWhenWaitingForUnboundedSyncReply);

Above you kept the order the same, but here you changed the order. Any reason?

&gt; Source/WebKit/Platform/IPC/Encoder.cpp:179
&gt; +    static_assert(sizeof(OptionSet&lt;MessageFlags&gt;::StorageType) == sizeof(uint8_t), &quot;Encoder uses the first byte of the buffer for message flags.&quot;);

The use of sizeof(uint8_t) here is a bit confusing to me. Maybe just write 1 instead?

&gt; Source/WebKit/Platform/IPC/Encoder.h:40
&gt; +enum class ShouldDispatchWhenWaitingForSyncReply : uint8_t;
&gt; +enum class MessageFlags : uint8_t;
&gt;  enum class MessageName : uint16_t;

Re-sort alphabetically?

&gt; Source/WebKit/Platform/IPC/MessageFlags.h:41
&gt; -enum class ShouldDispatchWhenWaitingForSyncReply { No, Yes, YesDuringUnboundedIPC };
&gt; +enum class ShouldDispatchWhenWaitingForSyncReply : uint8_t {
&gt; +    No,
&gt; +    Yes,
&gt; +    YesDuringUnboundedIPC
&gt; +};

Adding uint8_t, definitely an improvement. Spreading this out over 5 lines, doesn’t seem as obviously an improvement to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655106</commentid>
    <comment_count>4</comment_count>
      <attachid>399979</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 15:27:14 -0700</bug_when>
    <thetext>Comment on attachment 399979
Patch

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

&gt;&gt; Source/WebKit/Platform/IPC/Decoder.cpp:29
&gt;&gt; +#include &quot;ArgumentCoders.h&quot;
&gt; 
&gt; Don’t understand why this is now needed and wasn&apos;t before, but I assume there’s a reason.

In code I didn&apos;t change, we encode m_messageFlags which now needs the OptionSet encoder because the type changed.

&gt;&gt; Source/WebKit/Platform/IPC/Encoder.cpp:117
&gt;&gt; +        messageFlags().add(MessageFlags::DispatchMessageWhenWaitingForUnboundedSyncReply);
&gt; 
&gt; Above you kept the order the same, but here you changed the order. Any reason?

I figured as long as I&apos;m changing both lines, the order being consistent with case ShouldDispatchWhenWaitingForSyncReply::Yes is nicer.

&gt;&gt; Source/WebKit/Platform/IPC/MessageFlags.h:41
&gt;&gt; +};
&gt; 
&gt; Adding uint8_t, definitely an improvement. Spreading this out over 5 lines, doesn’t seem as obviously an improvement to me.

This makes the change history cleaner if we ever add another one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655111</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-21 15:30:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/r262032</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399979</attachid>
            <date>2020-05-21 14:10:21 -0700</date>
            <delta_ts>2020-05-21 14:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212230-20200521141020.patch</filename>
            <type>text/plain</type>
            <size>10673</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIwMjYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA1LTIxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGFuIE9wdGlv
blNldCBpbnN0ZWFkIG9mIHVpbnQ4X3QgZm9yIE1lc3NhZ2VGbGFncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMjMwCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MzQ5NjU0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJIGFsc28gcmVkdWNlIHRoZSBlbmNvZGluZyBzaXplIG9mIE9wdGlvblNldC4K
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8T3B0aW9uU2V0PFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRGVjb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmlzU3luY01lc3NhZ2UgY29u
c3QpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSBjb25zdCk6CisgICAgICAgIChJUEM6OkRlY29kZXI6OnNob3VsZFVz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RlY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChJUEM6OkVuY29kZXI6OmlzU3luY01lc3NhZ2UgY29uc3QpOgorICAgICAgICAoSVBD
OjpFbmNvZGVyOjpzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSBj
b25zdCk6CisgICAgICAgIChJUEM6OkVuY29kZXI6OnNldElzU3luY01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpFbmNvZGVyOjpzZXRTaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk6CisgICAgICAgIChJUEM6OkVuY29kZXI6OnNldEZ1bGx5U3luY2hyb25vdXNNb2Rl
Rm9yVGVzdGluZyk6CisgICAgICAgIChJUEM6OkVuY29kZXI6Om1lc3NhZ2VGbGFncyk6CisgICAg
ICAgIChJUEM6OkVuY29kZXI6Om1lc3NhZ2VGbGFncyBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmg6
CisgICAgICAgICgpOiBEZWxldGVkLgorCiAyMDIwLTA1LTIxICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogQWxsb3cgY29u
ZmlndXJhYmxlIHN0b3JhZ2UgYWNjZXNzIHNjb3BlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI2MTk2NikKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDEyICs1NSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1lCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uU2V0
PFQ+JiBvcHRpb25TZXQpCiAgICAgewotICAgICAgICBlbmNvZGVyIDw8IChzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob3B0aW9uU2V0LnRvUmF3KCkpKTsKKyAgICAgICAgZW5jb2RlciA8PCAoc3RhdGlj
X2Nhc3Q8dHlwZW5hbWUgT3B0aW9uU2V0PFQ+OjpTdG9yYWdlVHlwZT4ob3B0aW9uU2V0LnRvUmF3
KCkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIE9wdGlvblNldDxUPiYgb3B0aW9uU2V0KQogICAgIHsKLSAgICAg
ICAgdWludDY0X3QgdmFsdWU7CisgICAgICAgIHR5cGVuYW1lIE9wdGlvblNldDxUPjo6U3RvcmFn
ZVR5cGUgdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBBcmd1bWVudENvZGUKIAogICAgIHN0YXRpYyBPcHRpb25hbDxPcHRpb25TZXQ8
VD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHZhbHVlOworICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBPcHRpb25TZXQ8VD46OlN0
b3JhZ2VUeXBlPiB2YWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkocmV2aXNpb24gMjYxOTY2KQorKysgU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtOTIsMjEgKzkz
LDIxIEBAIERlY29kZXI6On5EZWNvZGVyKCkKIAogYm9vbCBEZWNvZGVyOjppc1N5bmNNZXNzYWdl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZXNzYWdlRmxhZ3MgJiBTeW5jTWVzc2FnZTsKKyAg
ICByZXR1cm4gbV9tZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2FnZUZsYWdzOjpTeW5jTWVzc2Fn
ZSk7CiB9CiAKIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgRGVjb2Rlcjo6
c2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoKSBjb25zdAogewot
ICAgIGlmIChtX21lc3NhZ2VGbGFncyAmIERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5KQorICAgIGlmIChtX21lc3NhZ2VGbGFncy5jb250YWlucyhNZXNzYWdlRmxhZ3M6OkRp
c3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KSkKICAgICAgICAgcmV0dXJuIFNo
b3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6OlllczsKLSAgICBpZiAobV9tZXNz
YWdlRmxhZ3MgJiBEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBs
eSkKKyAgICBpZiAobV9tZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2FnZUZsYWdzOjpEaXNwYXRj
aE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSkpCiAgICAgICAgIHJldHVy
biBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXNEdXJpbmdVbmJvdW5k
ZWRJUEM7CiAgICAgcmV0dXJuIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6
Ok5vOwogfQogCiBib29sIERlY29kZXI6OnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9y
VGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVzc2FnZUZsYWdzICYgVXNlRnVsbHlT
eW5jaHJvbm91c01vZGVGb3JUZXN0aW5nOworICAgIHJldHVybiBtX21lc3NhZ2VGbGFncy5jb250
YWlucyhNZXNzYWdlRmxhZ3M6OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyk7CiB9
CiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKICNpbmNsdWRlICJTdHJpbmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKICNpZiBIQVZFKFFPU19DTEFTU0VTKQpAQCAtNDAsNyArNDEsOCBAQCBuYW1lc3Bh
Y2UgSVBDIHsKIAogY2xhc3MgRGF0YVJlZmVyZW5jZTsKIGNsYXNzIEltcG9ydGFuY2VBc3NlcnRp
b247Ci1lbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk7Citl
bnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFNob3VsZERpc3Bh
dGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwogCiBjbGFzcyBEZWNvZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE5MSw3ICsxOTMsNyBAQCBwcml2YXRl
OgogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiAKLSAgICB1aW50OF90
IG1fbWVzc2FnZUZsYWdzOworICAgIE9wdGlvblNldDxNZXNzYWdlRmxhZ3M+IG1fbWVzc2FnZUZs
YWdzOwogICAgIE1lc3NhZ2VOYW1lIG1fbWVzc2FnZU5hbWU7CiAKICAgICB1aW50NjRfdCBtX2Rl
c3RpbmF0aW9uSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAko
cmV2aXNpb24gMjYxOTY2KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgot
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiAjaWYgT1Mo
REFSV0lOKQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CkBAIC04MSwxNCArODEsMTQgQEAgRW5jb2Rl
cjo6fkVuY29kZXIoKQogCiBib29sIEVuY29kZXI6OmlzU3luY01lc3NhZ2UoKSBjb25zdAogewot
ICAgIHJldHVybiAqYnVmZmVyKCkgJiBTeW5jTWVzc2FnZTsKKyAgICByZXR1cm4gbWVzc2FnZUZs
YWdzKCkuY29udGFpbnMoTWVzc2FnZUZsYWdzOjpTeW5jTWVzc2FnZSk7CiB9CiAKIFNob3VsZERp
c3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgRW5jb2Rlcjo6c2hvdWxkRGlzcGF0Y2hNZXNz
YWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoKSBjb25zdAogewotICAgIGlmICgqYnVmZmVyKCkg
JiBEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSkKKyAgICBpZiAobWVzc2Fn
ZUZsYWdzKCkuY29udGFpbnMoTWVzc2FnZUZsYWdzOjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSkpCiAgICAgICAgIHJldHVybiBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5OjpZZXM7Ci0gICAgaWYgKCpidWZmZXIoKSAmIERpc3BhdGNoTWVzc2FnZVdo
ZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5KQorICAgIGlmIChtZXNzYWdlRmxhZ3MoKS5j
b250YWlucyhNZXNzYWdlRmxhZ3M6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yVW5ib3Vu
ZGVkU3luY1JlcGx5KSkKICAgICAgICAgcmV0dXJuIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHk6Olllc0R1cmluZ1VuYm91bmRlZElQQzsKICAgICByZXR1cm4gU2hvdWxkRGlz
cGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6Tm87CiB9CkBAIC05NiwzMSArOTYsMzIgQEAg
U2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSBFbgogdm9pZCBFbmNvZGVyOjpz
ZXRJc1N5bmNNZXNzYWdlKGJvb2wgaXNTeW5jTWVzc2FnZSkKIHsKICAgICBpZiAoaXNTeW5jTWVz
c2FnZSkKLSAgICAgICAgKmJ1ZmZlcigpIHw9IFN5bmNNZXNzYWdlOworICAgICAgICBtZXNzYWdl
RmxhZ3MoKS5hZGQoTWVzc2FnZUZsYWdzOjpTeW5jTWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAg
ICAqYnVmZmVyKCkgJj0gflN5bmNNZXNzYWdlOworICAgICAgICBtZXNzYWdlRmxhZ3MoKS5yZW1v
dmUoTWVzc2FnZUZsYWdzOjpTeW5jTWVzc2FnZSk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6c2V0U2hv
dWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoU2hvdWxkRGlzcGF0Y2hX
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSBzaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KQogewogICAgIHN3aXRjaCAoc2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSkgewogICAgIGNhc2UgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTo6Tm86
Ci0gICAgICAgICpidWZmZXIoKSAmPSB+KERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5IHwgRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkp
OworICAgICAgICBtZXNzYWdlRmxhZ3MoKS5yZW1vdmUoTWVzc2FnZUZsYWdzOjpEaXNwYXRjaE1l
c3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgICAgIG1lc3NhZ2VGbGFncygpLnJl
bW92ZShNZXNzYWdlRmxhZ3M6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yVW5ib3VuZGVk
U3luY1JlcGx5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG91bGREaXNwYXRjaFdoZW5X
YWl0aW5nRm9yU3luY1JlcGx5OjpZZXM6Ci0gICAgICAgICpidWZmZXIoKSB8PSBEaXNwYXRjaE1l
c3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseTsKLSAgICAgICAgKmJ1ZmZlcigpICY9IH5EaXNw
YXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseTsKKyAgICAgICAgbWVz
c2FnZUZsYWdzKCkuYWRkKE1lc3NhZ2VGbGFnczo6RGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOworICAgICAgICBtZXNzYWdlRmxhZ3MoKS5yZW1vdmUoTWVzc2FnZUZsYWdz
OjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eTo6WWVzRHVyaW5nVW5ib3VuZGVkSVBDOgotICAgICAgICAqYnVmZmVyKCkgfD0gRGlzcGF0Y2hN
ZXNzYWdlV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHk7Ci0gICAgICAgICpidWZmZXIo
KSAmPSB+RGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk7CisgICAgICAgIG1l
c3NhZ2VGbGFncygpLnJlbW92ZShNZXNzYWdlRmxhZ3M6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKKyAgICAgICAgbWVzc2FnZUZsYWdzKCkuYWRkKE1lc3NhZ2VGbGFn
czo6RGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CiAKIHZvaWQgRW5jb2Rlcjo6c2V0RnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nKCkKIHsKLSAgICAqYnVmZmVyKCkgfD0gVXNlRnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nOworICAgIG1lc3NhZ2VGbGFncygpLmFkZChNZXNzYWdlRmxhZ3M6OlVz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyk7CiB9CiAKIHZvaWQgRW5jb2Rlcjo6d3Jh
cEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG9yaWdpbmFsKQpAQCAtMTcyLDYg
KzE3MywxOCBAQCB2b2lkIEVuY29kZXI6OmVuY29kZUhlYWRlcigpCiAgICAgKnRoaXMgPDwgbV9k
ZXN0aW5hdGlvbklEOwogfQogCitPcHRpb25TZXQ8TWVzc2FnZUZsYWdzPiYgRW5jb2Rlcjo6bWVz
c2FnZUZsYWdzKCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHBhc3MgYW4g
T3B0aW9uU2V0PE1lc3NhZ2VGbGFncz4gaW50byB0aGUgRW5jb2RlciBjb25zdHJ1Y3RvciBpbnN0
ZWFkIG9mIGVuY29kaW5nIGRlZmF1bHRNZXNzYWdlRmxhZ3MgdGhlbiB1c2luZyB0aGlzIHRvIGNo
YW5nZSBpdCBsYXRlci4KKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihPcHRpb25TZXQ8TWVzc2Fn
ZUZsYWdzPjo6U3RvcmFnZVR5cGUpID09IHNpemVvZih1aW50OF90KSwgIkVuY29kZXIgdXNlcyB0
aGUgZmlyc3QgYnl0ZSBvZiB0aGUgYnVmZmVyIGZvciBtZXNzYWdlIGZsYWdzLiIpOworICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxPcHRpb25TZXQ8TWVzc2FnZUZsYWdzPio+KGJ1ZmZlcigp
KTsKK30KKworY29uc3QgT3B0aW9uU2V0PE1lc3NhZ2VGbGFncz4mIEVuY29kZXI6Om1lc3NhZ2VG
bGFncygpIGNvbnN0Cit7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PE9wdGlvblNldDxN
ZXNzYWdlRmxhZ3M+Kj4oYnVmZmVyKCkpOworfQorCiB1aW50OF90KiBFbmNvZGVyOjpncm93KHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCBhbGlnbmVkU2l6ZSA9
IHJvdW5kVXBUb0FsaWdubWVudChtX2J1ZmZlclNpemUsIGFsaWdubWVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDggQEAKIG5hbWVzcGFjZSBJUEMgewogCiBjbGFzcyBEYXRhUmVmZXJlbmNlOwotZW51bSBjbGFz
cyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OworZW51bSBjbGFzcyBTaG91
bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdDsKK2VudW0gY2xhc3Mg
TWVzc2FnZUZsYWdzIDogdWludDhfdDsKIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZf
dDsKIAogY2xhc3MgRW5jb2RlciBmaW5hbCB7CkBAIC0xMTYsNiArMTE3LDggQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICB2b2lkIGVuY29kZUhlYWRlcigpOworICAgIGNvbnN0IE9wdGlvblNldDxN
ZXNzYWdlRmxhZ3M+JiBtZXNzYWdlRmxhZ3MoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8TWVzc2Fn
ZUZsYWdzPiYgbWVzc2FnZUZsYWdzKCk7CiAKICAgICBNZXNzYWdlTmFtZSBtX21lc3NhZ2VOYW1l
OwogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRpb25JRDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oCShyZXZpc2lvbiAyNjE5NjYpCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjAg
KzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBNZXNzYWdlRmxhZ3NfaAotI2RlZmluZSBNZXNzYWdlRmxhZ3NfaAorI3ByYWdtYSBvbmNl
CiAKIG5hbWVzcGFjZSBJUEMgewogCi1lbnVtIE1lc3NhZ2VGbGFncyB7CitlbnVtIGNsYXNzIE1l
c3NhZ2VGbGFncyA6IHVpbnQ4X3QgewogICAgIFN5bmNNZXNzYWdlID0gMSA8PCAwLAogICAgIERp
c3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5ID0gMSA8PCAxLAogICAgIERpc3Bh
dGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5ID0gMSA8PCAyLAogICAg
IFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyA9IDEgPDwgMywKIH07CiAKLWVudW0g
Y2xhc3MgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSB7IE5vLCBZZXMsIFll
c0R1cmluZ1VuYm91bmRlZElQQyB9OworZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0
aW5nRm9yU3luY1JlcGx5IDogdWludDhfdCB7CisgICAgTm8sCisgICAgWWVzLAorICAgIFllc0R1
cmluZ1VuYm91bmRlZElQQworfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCi0KLSNlbmRpZiAvLyBN
ZXNzYWdlRmxhZ3NfaAo=
</data>
<flag name="review"
          id="415396"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>