[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cifs-protocol
Subject:    Re: [cifs-protocol] [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - TrackingID#2210140040005999
From:       "Jeff McCashland \(He/him\) via cifs-protocol" <cifs-protocol () lists ! samba ! org>
Date:       2023-01-11 22:59:03
Message-ID: BL1PR21MB3113FF37961A78A2AAEBC9E3A3FC9 () BL1PR21MB3113 ! namprd21 ! prod ! outlook ! com
[Download RAW message or body]

[Attachment #2 (text/plain)]

Hi Douglas,

We have updated [MS-XCA] for the next release to address this issue:

2.2.4 Processing

  *   Loop until a decompression terminating condition
  *       If remaining input buffer does not have enough space for a Huffman table
  *            If we're at the end of the output buffer
  *                Decompression is complete, return success
  *            The compressed data is not valid, return error
  *        Build the decoding table
  *        CurrentPosition = 256              // start at the end of the Huffman \
table [,,,]

I hope that helps!

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open \
                Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) Pacific \
Time (US and Canada) Local country phone number found here: \
http://support.microsoft.com/globalenglish<https://nam06.safelinks.protection.outlook. \
com/?url=http%3A%2F%2Fsupport.microsoft.com%2Fglobalenglish&data=02%7C01%7Cjeffm%40mic \
rosoft.com%7C92c4c7bb8c6d4412e78108d80d79f45f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7 \
C0%7C637274164726698458&sdata=KtEL7V58Q7rscYvr9cPik%2FmYKZIv0rh3E3kBdGywwwI%3D&reserved=0> \
| Extension 1138300

________________________________
From: Jeff McCashland (He/him)
Sent: Tuesday, November 15, 2022 3:53 PM
To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>; cifs-protocol@lists.samba.org \
                <cifs-protocol@lists.samba.org>; Samuel Cabrero (Samba) \
                <scabrero@samba.org>
Cc: Microsoft Support <supportmail@microsoft.com>
Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - \
TrackingID#2210140040005999

Hi Douglas,

Thank you for the response. I will file a request to update the documentation.

Let us know at our DocHelp alias if you find any more issues.

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open \
                Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) Pacific \
Time (US and Canada) Local country phone number found here: \
http://support.microsoft.com/globalenglish | Extension 1138300

-----Original Message-----
From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sent: Tuesday, November 15, 2022 2:41 PM
To: Jeff McCashland (He/him) <jeffm@microsoft.com>; cifs-protocol@lists.samba.org; \
                Samuel Cabrero (Samba) <scabrero@samba.org>
Cc: Microsoft Support <supportmail@microsoft.com>
Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - \
TrackingID#2210140040005999

I think that would be a good addition.

With regard to implementation specificity, my understanding is some implementations \
have stricter checks (involving the EOF symbol etc), but the strategy you describe \
seems best for maximum interoperability. In any case, the loop must break there, and \
the question is only whether we regard it as success.

My implementation currently insists on an EOF symbol followed by 0-32 zero bits, \
which works with all the Windows derived data I have, but I will relax it to match \
this.

Your addition to the pseudocode echoes *some* of the text in the paragraph above it, \
other parts of which are the subject of issue 2210140040006056.

Douglas




On 16/11/22 10:07, Jeff McCashland (He/him) wrote:
> Hi Douglas,
> 
> One more pass at this one, with some nuance. If we were to document this, I believe \
> it would look something like this at the beginning of the pseudocode: 
> 2.2 LZ77+Huffman Decompression Algorithm Details
> 2.2.4 Processing
> 
> Loop until a decompression terminating condition
> Add:  If remaining buffer does not have enough space for a Huffman table
> If we're at the end of the output buffer
> Decompression is complete, return with success
> The compressed data is not valid. Return with error.
> Build the decoding table
> CurrentPosition = 256              // start at the end of the Huffman table
> [...]
> 
> In your opinion, is this an optimization/implementation detail, or necessary to \
> document as above? 
> Best regards,
> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> Protocol Open Specifications Team
> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> found here:
> https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo
> rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.
> com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d
> b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL
> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&
> amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&amp;reser
> ved=0 | Extension 1138300
> 
> -----Original Message-----
> From: Jeff McCashland (He/him)
> Sent: Monday, November 14, 2022 1:04 PM
> To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>;
> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> <scabrero@samba.org>
> Cc: Microsoft Support <supportmail@microsoft.com>
> Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> TrackingID#2210140040005999
> 
> Ok, Thanks Douglas. I look forward to hearing what you come up with.
> 
> Best regards,
> Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> Protocol Open Specifications Team
> Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> found here:
> https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo
> rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.
> com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d
> b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL
> jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&
> amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&amp;reser
> ved=0 | Extension 1138300
> 
> -----Original Message-----
> From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
> Sent: Friday, November 11, 2022 2:42 PM
> To: Jeff McCashland (He/him) <jeffm@microsoft.com>;
> cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> <scabrero@samba.org>
> Cc: Microsoft Support <supportmail@microsoft.com>
> Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> TrackingID#2210140040005999
> 
> hi Jeff,
> 
> It will do an an answer, though I don't think it is entirely correct.
> The encoding of EOF according to the Huffman table are the bits 0100 which is there \
> in the 048d word before the zeroes. 0000 would encode 'w', I think. But, yes, the \
> size tells us we're finished. 
> While it's OK to have an arbitrary number of extra bytes at the end of the the \
> message, the situation is a whole lot more precarious at the end of a block inside \
> a larger message, where there is a need to know exactly how many zeroes to step \
> over, or the next Huffman block will be read from the wrong place (I know that's \
> not quite the same question). 
> But don't spend any more time on this one. I am closing in on the answer via trial \
> and error and may get back to you with suggestions for MS-XCA. 
> thanks,
> Douglas
> 
> 
> On 12/11/22 11:04, Jeff McCashland (He/him) wrote:
> > Hi Douglas,
> > 
> > The 4 zero bytes are the encoding of the EOF. We don't actually decode these \
> > bytes. Once we decode the final literal 'z', we realize we've reached the \
> > original uncompressed size, and stop processing. This is why it's essential to \
> > pass in the correct size of the original uncompressed buffer. 
> > Let me know if that doesn't fully answer your question.
> > 
> > Best regards,
> > Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> > Protocol Open Specifications Team
> > Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> > (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> > found here:
> > https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp
> > o
> > rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.
> > com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011
> > d
> > b47%7C1%7C0%7C638038033063463462%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w
> > L
> > jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C
> > &
> > amp;sdata=%2B8Kg5XhHodVgvSIaHHpkv%2FUDJ479mgOD1dUVI121Ojw%3D&amp;rese
> > r
> > ved=0 | Extension 1138300
> > 
> > -----Original Message-----
> > From: Jeff McCashland (He/him)
> > Sent: Thursday, October 27, 2022 1:18 PM
> > To: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>;
> > cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> > <scabrero@samba.org>
> > Cc: Microsoft Support <supportmail@microsoft.com>
> > Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> > TrackingID#2210140040005999
> > 
> > Hi Douglas,
> > 
> > Thank you for the update. I'll look into that aspect.
> > 
> > Best regards,
> > Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft
> > Protocol Open Specifications Team
> > Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:
> > (UTC-08:00) Pacific Time (US and Canada) Local country phone number
> > found here:
> > https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp
> > o
> > rt.microsoft.com%2Fglobalenglish&amp;data=05%7C01%7Cjeffm%40microsoft.
> > com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011
> > d
> > b47%7C1%7C0%7C638038033063619689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w
> > L
> > jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C
> > &
> > amp;sdata=8B5w17A6tXD0cerKgk%2FqbMBvj%2Fw9xKvAxqZRhZK3%2FUc%3D&amp;re
> > s
> > erved=0 | Extension 1138300
> > 
> > -----Original Message-----
> > From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
> > Sent: Thursday, October 27, 2022 1:09 PM
> > To: Jeff McCashland (He/him) <jeffm@microsoft.com>;
> > cifs-protocol@lists.samba.org; Samuel Cabrero (Samba)
> > <scabrero@samba.org>
> > Cc: Microsoft Support <supportmail@microsoft.com>
> > Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -
> > TrackingID#2210140040005999
> > 
> > hi Jeff,
> > 
> > I would like to amend his question slightly if I may.
> > 
> > > In the first example in Section 3.2, where
> > > "abcdefghijklmnopqrstuvwxyz" is "compressed" into a ~282 byte
> > > sequence ending with
> > > 
> > > d8 52 3e d7 94 11 5b e9 19 5f f9 d6 7c df 8d 04 00 00 00 00
> > > 
> > > where do all the trailing zeros come from?
> > > 
> > > They do not encode characters, and from the decoding description in
> > > 2.2.4, we don't read 32 bits at a time except at the start of the
> > > first block, so processing should be well finished before we get to
> > > read these. It seems to violate the "input buffer is finished" termination \
> > > rule. 
> > 
> > I now think I understand how the zeroes are produced, based on the interactions \
> > between  OutputPosition1, OutputPosition2, and OutputPosition in the 2.1.4.3 \
> > pseudocode. I can reproduce the result. 
> > But I still can't understand how they are consumed, based on the terminating \
> > conditions in the decoding phase (2.2.4). So the "where do they come from" part \
> > of the question is answered, but the implicit "how are they read" part is not. 
> > Douglas
> 


[Attachment #3 (text/html)]

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} \
</style> </head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> \
Hi Douglas,</div> <div style="font-family: Calibri, Arial, Helvetica, sans-serif; \
font-size: 11pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" \
class="elementToProof"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> \
We have updated [MS-XCA] for the next release to address this issue:</div> <div \
style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; color: \
rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof \
ContentPasted1"> <b>2.2.4 Processing</b><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);" class="elementToProof"> \
<div style="mso-element:para-border-div;border:solid white 3.0pt;padding:4.0pt 6.0pt \
5.0pt 6.0pt;background:white;margin-left:.25in;margin-right:0in"> <ul>
<li style="color: black;"><span style="color:black;mso-color-alt:windowtext" \
class="ContentPasted0">Loop until a decompression terminating condition</span><o:p \
class="ContentPasted0">&nbsp;</o:p></li><li><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" class="ContentPasted0">&nbsp;&nbsp;&nbsp; </span>If \
remaining input buffer does not have enough space for a Huffman table</span><o:p \
class="ContentPasted0">&nbsp;</o:p></li><li><span \
style="mso-fareast-font-family:&quot;Courier \
New&quot;;mso-bidi-font-family:&quot;Courier New&quot;"><span \
style="mso-list:Ignore"><span style="font:7.0pt &quot;Times New Roman&quot;"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;</span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>If we're at \
the end of the output buffer</span><o:p \
class="ContentPasted0">&nbsp;</o:p></li><li><span \
style="mso-fareast-font-family:&quot;Courier \
New&quot;;mso-bidi-font-family:&quot;Courier New&quot;"><span \
style="mso-list:Ignore"><span style="font:7.0pt &quot;Times New Roman&quot;"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;</span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span>Decompression is complete, return success</span><o:p \
class="ContentPasted0">&nbsp;</o:p></li><li><span \
style="mso-fareast-font-family:&quot;Courier \
New&quot;;mso-bidi-font-family:&quot;Courier New&quot;"><span \
style="mso-list:Ignore"><span style="font:7.0pt &quot;Times New Roman&quot;"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;</span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The \
compressed data is not valid, return error<span style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;&nbsp;&nbsp; </span></span><o:p \
class="ContentPasted0">&nbsp;</o:p></li><li><span \
style="mso-fareast-font-family:&quot;Courier \
New&quot;;mso-bidi-font-family:&quot;Courier New&quot;"><span \
style="mso-list:Ignore"><span style="font:7.0pt &quot;Times New Roman&quot;"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;</span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" class="ContentPasted0">&nbsp;&nbsp;&nbsp; </span>Build the \
decoding table</span><o:p class="ContentPasted0">&nbsp;</o:p></li><li><span \
style="mso-fareast-font-family:&quot;Courier \
New&quot;;mso-bidi-font-family:&quot;Courier New&quot;"><span \
style="mso-list:Ignore"><span style="font:7.0pt &quot;Times New Roman&quot;"><span \
style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;</span></span></span></span><span \
style="color:black;mso-color-alt:windowtext" class="ContentPasted0"><span \
style="mso-spacerun:yes" class="ContentPasted0">&nbsp;&nbsp;&nbsp; \
</span>CurrentPosition = 256<span style="mso-spacerun:yes" \
class="ContentPasted0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span>// start at the end of the Huffman table</span><o:p \
class="ContentPasted0">&nbsp;</o:p> <div style=""><o:p \
class="ContentPasted0">[,,,]</o:p></div> </li></ul>
</div>
I hope that helps!</div>
<div class="elementToProof">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 11pt; \
color: rgb(0, 0, 0);"> <br>
</div>
<div id="Signature">
<div>
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 15">
<meta name="Originator" content="Microsoft Word 15">
<link rel="File-List" href="Protocols \
(jeffm@microsoft.com)_files/filelist.xml"><!--[if gte mso 9]><xml>  \
<o:OfficeDocumentSettings>  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><link rel="themeData" href="Protocols \
(jeffm@microsoft.com)_files/themedata.thmx"><link rel="colorSchemeMapping" \
href="Protocols (jeffm@microsoft.com)_files/colorschememapping.xml"><!--[if gte mso \
9]><xml>  <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:DoNotShadeFormData/>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
  DefSemiHidden="false" DefQFormat="false" DefPriority="99"
  LatentStyleCount="376">
  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 6"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 7"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 8"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index 9"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" Name="toc 9"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Normal Indent"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="footnote text"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="annotation text"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="header"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="footer"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="index heading"/>
  <w:LsdException Locked="false" Priority="35" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="table of figures"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="envelope address"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="envelope return"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="footnote reference"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="annotation reference"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="line number"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="page number"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="endnote reference"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="endnote text"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="table of authorities"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="macro"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="toa heading"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Bullet"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Number"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Bullet 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Bullet 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Bullet 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Bullet 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Number 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Number 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Number 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Number 5"/>
  <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Closing"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Signature"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="true"
   UnhideWhenUsed="true" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text Indent"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Continue"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Continue 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Continue 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Continue 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="List Continue 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Message Header"/>
  <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Salutation"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Date"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text First Indent"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text First Indent 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Note Heading"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text Indent 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Body Text Indent 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Block Text"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Hyperlink"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="FollowedHyperlink"/>
  <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Document Map"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Plain Text"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="E-mail Signature"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Top of Form"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Bottom of Form"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Normal (Web)"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Acronym"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Address"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Cite"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Code"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Definition"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Keyboard"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Preformatted"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Sample"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Typewriter"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="HTML Variable"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Normal Table"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="annotation subject"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="No List"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Outline List 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Outline List 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Outline List 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Simple 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Simple 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Simple 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Classic 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Classic 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Classic 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Classic 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Colorful 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Colorful 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Colorful 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Columns 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Columns 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Columns 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Columns 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Columns 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 6"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 7"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Grid 8"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 4"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 5"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 6"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 7"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table List 8"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table 3D effects 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table 3D effects 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table 3D effects 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Contemporary"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Elegant"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Professional"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Subtle 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Subtle 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Web 1"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Web 2"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Web 3"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Balloon Text"/>
  <w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Table Theme"/>
  <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" QFormat="true"
   Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" QFormat="true"
   Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" QFormat="true"
   Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" QFormat="true"
   Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" QFormat="true"
   Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" QFormat="true"
   Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" SemiHidden="true"
   UnhideWhenUsed="true" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" SemiHidden="true"
   UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
  <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
  <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
  <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
  <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
  <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
  <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
  <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
  <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
  <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
  <w:LsdException Locked="false" Priority="46"
   Name="Grid Table 1 Light Accent 1"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
  <w:LsdException Locked="false" Priority="51"
   Name="Grid Table 6 Colorful Accent 1"/>
  <w:LsdException Locked="false" Priority="52"
   Name="Grid Table 7 Colorful Accent 1"/>
  <w:LsdException Locked="false" Priority="46"
   Name="Grid Table 1 Light Accent 2"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
  <w:LsdException Locked="false" Priority="51"
   Name="Grid Table 6 Colorful Accent 2"/>
  <w:LsdException Locked="false" Priority="52"
   Name="Grid Table 7 Colorful Accent 2"/>
  <w:LsdException Locked="false" Priority="46"
   Name="Grid Table 1 Light Accent 3"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
  <w:LsdException Locked="false" Priority="51"
   Name="Grid Table 6 Colorful Accent 3"/>
  <w:LsdException Locked="false" Priority="52"
   Name="Grid Table 7 Colorful Accent 3"/>
  <w:LsdException Locked="false" Priority="46"
   Name="Grid Table 1 Light Accent 4"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
  <w:LsdException Locked="false" Priority="51"
   Name="Grid Table 6 Colorful Accent 4"/>
  <w:LsdException Locked="false" Priority="52"
   Name="Grid Table 7 Colorful Accent 4"/>
  <w:LsdException Locked="false" Priority="46"
   Name="Grid Table 1 Light Accent 5"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
  <w:LsdException Locked="false" Priority="51"
   Name="Grid Table 6 Colorful Accent 5"/>
  <w:LsdException Locked="false" Priority="52"
   Name="Grid Table 7 Colorful Accent 5"/>
  <w:LsdException Locked="false" Priority="46"
   Name="Grid Table 1 Light Accent 6"/>
  <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
  <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
  <w:LsdException Locked="false" Priority="51"
   Name="Grid Table 6 Colorful Accent 6"/>
  <w:LsdException Locked="false" Priority="52"
   Name="Grid Table 7 Colorful Accent 6"/>
  <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
  <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
  <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
  <w:LsdException Locked="false" Priority="46"
   Name="List Table 1 Light Accent 1"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
  <w:LsdException Locked="false" Priority="51"
   Name="List Table 6 Colorful Accent 1"/>
  <w:LsdException Locked="false" Priority="52"
   Name="List Table 7 Colorful Accent 1"/>
  <w:LsdException Locked="false" Priority="46"
   Name="List Table 1 Light Accent 2"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
  <w:LsdException Locked="false" Priority="51"
   Name="List Table 6 Colorful Accent 2"/>
  <w:LsdException Locked="false" Priority="52"
   Name="List Table 7 Colorful Accent 2"/>
  <w:LsdException Locked="false" Priority="46"
   Name="List Table 1 Light Accent 3"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
  <w:LsdException Locked="false" Priority="51"
   Name="List Table 6 Colorful Accent 3"/>
  <w:LsdException Locked="false" Priority="52"
   Name="List Table 7 Colorful Accent 3"/>
  <w:LsdException Locked="false" Priority="46"
   Name="List Table 1 Light Accent 4"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
  <w:LsdException Locked="false" Priority="51"
   Name="List Table 6 Colorful Accent 4"/>
  <w:LsdException Locked="false" Priority="52"
   Name="List Table 7 Colorful Accent 4"/>
  <w:LsdException Locked="false" Priority="46"
   Name="List Table 1 Light Accent 5"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
  <w:LsdException Locked="false" Priority="51"
   Name="List Table 6 Colorful Accent 5"/>
  <w:LsdException Locked="false" Priority="52"
   Name="List Table 7 Colorful Accent 5"/>
  <w:LsdException Locked="false" Priority="46"
   Name="List Table 1 Light Accent 6"/>
  <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
  <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
  <w:LsdException Locked="false" Priority="51"
   Name="List Table 6 Colorful Accent 6"/>
  <w:LsdException Locked="false" Priority="52"
   Name="List Table 7 Colorful Accent 6"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Mention"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Smart Hyperlink"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Hashtag"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Unresolved Mention"/>
  <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
   Name="Smart Link"/>
 </w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
<div class="WordSection1" style="page: WordSection1;">
<div>
<div>
<div>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, \
sans-serif;"> <span style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;
color:blue">Best regards,</span><b><span style="font-size:10.0pt;font-family:
&quot;Arial&quot;,sans-serif;color:navy"><br>
<i>Jeff M</i></span></b><b><i><sup><span style="font-size:10.0pt;font-family:
&quot;Arial&quot;,sans-serif;color:#002060">c</span></sup></i></b><b><i><span \
style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:navy">Cashland \
(He/him) </span></i></b><b><span \
style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif; color:navy">| \
Senior Escalation Engineer<i> | Microsoft</i></span></b><b><span \
style="font-family:&quot;Arial&quot;,sans-serif;color:navy"> </span></b><b><span \
style="font-size:10.0pt;font-family:&quot;Arial&quot;,sans-serif;color:navy">Protocol \
Open Specifications Team <o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, \
sans-serif;"> <span style="font-size:9.0pt;font-family:&quot;Arial&quot;,sans-serif;
color:blue">Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) \
Pacific Time (US and Canada)<o:p></o:p></span></p> <p class="MsoNormal" \
style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> <span \
style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif; color:blue">Local \
country phone number found here: </span><span style="color:#2F5496"><a \
href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupport.microso \
ft.com%2Fglobalenglish&amp;data=02%7C01%7Cjeffm%40microsoft.com%7C92c4c7bb8c6d4412e781 \
08d80d79f45f%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637274164726698458&amp;sdata=KtEL7V58Q7rscYvr9cPik%2FmYKZIv0rh3E3kBdGywwwI%3D&amp;reserved=0"><span \
style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif">http://support.microsoft.com/globalenglish</span></a></span><span \
style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif;color:blue">  | \
Extension 1138300<o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0in; \
font-size: 11pt; font-family: Calibri, sans-serif;"> <span \
style="font-size:8.0pt;font-family:&quot;Arial&quot;,sans-serif; \
color:blue"><o:p>&nbsp;</o:p></span></p> </div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" \
style="font-size:11pt" color="#000000"><b>From:</b> Jeff McCashland (He/him)<br> \
<b>Sent:</b> Tuesday, November 15, 2022 3:53 PM<br> <b>To:</b> Douglas Bagnall \
&lt;douglas.bagnall@catalyst.net.nz&gt;; cifs-protocol@lists.samba.org \
&lt;cifs-protocol@lists.samba.org&gt;; Samuel Cabrero (Samba) \
&lt;scabrero@samba.org&gt;<br> <b>Cc:</b> Microsoft Support \
&lt;supportmail@microsoft.com&gt;<br> <b>Subject:</b> RE: [EXTERNAL] [MS-XCA] LZ77+ \
Huffman example 1 - TrackingID#2210140040005999</font> <div>&nbsp;</div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi Douglas,<br>
<br>
Thank you for the response. I will file a request to update the documentation. <br>
<br>
Let us know at our DocHelp alias if you find any more issues. <br>
<br>
Best regards,<br>
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open \
Specifications Team <br>
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) Pacific \
Time (US and Canada)<br> Local country phone number found here: <a \
href="http://support.microsoft.com/globalenglish"> \
http://support.microsoft.com/globalenglish</a> | Extension 1138300<br> <br>
-----Original Message-----<br>
From: Douglas Bagnall &lt;douglas.bagnall@catalyst.net.nz&gt; <br>
Sent: Tuesday, November 15, 2022 2:41 PM<br>
To: Jeff McCashland (He/him) &lt;jeffm@microsoft.com&gt;; \
                cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) \
                &lt;scabrero@samba.org&gt;<br>
Cc: Microsoft Support &lt;supportmail@microsoft.com&gt;<br>
Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - \
TrackingID#2210140040005999<br> <br>
I think that would be a good addition.<br>
<br>
With regard to implementation specificity, my understanding is some implementations \
have stricter checks (involving the EOF symbol etc), but the strategy you describe \
seems best for maximum interoperability. In any case, the loop must break there, and \
the question  is only whether we regard it as success.<br>
<br>
My implementation currently insists on an EOF symbol followed by 0-32 zero bits, \
which works with all the Windows derived data I have, but I will relax it to match \
this.<br> <br>
Your addition to the pseudocode echoes *some* of the text in the paragraph above it, \
other parts of which are the subject of issue 2210140040006056.<br> <br>
Douglas<br>
<br>
<br>
<br>
<br>
On 16/11/22 10:07, Jeff McCashland (He/him) wrote:<br>
&gt; Hi Douglas,<br>
&gt; <br>
&gt; One more pass at this one, with some nuance. If we were to document this, I \
believe it would look something like this at the beginning of the pseudocode:<br> \
&gt; <br> &gt; 2.2 LZ77+Huffman Decompression Algorithm Details<br>
&gt; 2.2.4 Processing<br>
&gt; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Loop until a decompression terminating \
condition<br> &gt; Add:&nbsp; If remaining buffer does not have enough space for a \
Huffman table<br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
If we're at the end of the output buffer<br> \
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
Decompression is complete, return with success<br> \
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
The compressed data is not valid. Return with error.<br> \
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Build the decoding table<br> \
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CurrentPosition = \
256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // \
start at the end of the Huffman table<br> \
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [...]<br> &gt; <br>
&gt; In your opinion, is this an optimization/implementation detail, or necessary to \
document as above?<br> &gt; <br>
&gt; Best regards,<br>
&gt; Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
&gt; Protocol Open Specifications Team<br>
&gt; Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: <br>
&gt; (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
&gt; found here: <br>
&gt; <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo">
 https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo</a><br>
&gt; rt.microsoft.com%2Fglobalenglish&amp;amp;data=05%7C01%7Cjeffm%40microsoft.<br>
&gt; com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d<br>
&gt; b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL<br>
&gt; jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;<br>
&gt; amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&amp;amp;reser<br>
&gt; ved=0 | Extension 1138300<br>
&gt; <br>
&gt; -----Original Message-----<br>
&gt; From: Jeff McCashland (He/him)<br>
&gt; Sent: Monday, November 14, 2022 1:04 PM<br>
&gt; To: Douglas Bagnall &lt;douglas.bagnall@catalyst.net.nz&gt;; <br>
&gt; cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
&gt; &lt;scabrero@samba.org&gt;<br>
&gt; Cc: Microsoft Support &lt;supportmail@microsoft.com&gt;<br>
&gt; Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - <br>
&gt; TrackingID#2210140040005999<br>
&gt; <br>
&gt; Ok, Thanks Douglas. I look forward to hearing what you come up with.<br>
&gt; <br>
&gt; Best regards,<br>
&gt; Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
&gt; Protocol Open Specifications Team<br>
&gt; Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: <br>
&gt; (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
&gt; found here: <br>
&gt; <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo">
 https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsuppo</a><br>
&gt; rt.microsoft.com%2Fglobalenglish&amp;amp;data=05%7C01%7Cjeffm%40microsoft.<br>
&gt; com%7C63c3b350100e4d8e19af08dac75a6fb7%7C72f988bf86f141af91ab2d7cd011d<br>
&gt; b47%7C1%7C0%7C638041488484127933%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL<br>
&gt; jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;<br>
&gt; amp;sdata=W68NhydfBEeoxz9Cs%2F8LT%2Bv0wEQ7gZcLUvfWxRm6zIs%3D&amp;amp;reser<br>
&gt; ved=0 | Extension 1138300<br>
&gt; <br>
&gt; -----Original Message-----<br>
&gt; From: Douglas Bagnall &lt;douglas.bagnall@catalyst.net.nz&gt;<br>
&gt; Sent: Friday, November 11, 2022 2:42 PM<br>
&gt; To: Jeff McCashland (He/him) &lt;jeffm@microsoft.com&gt;; <br>
&gt; cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
&gt; &lt;scabrero@samba.org&gt;<br>
&gt; Cc: Microsoft Support &lt;supportmail@microsoft.com&gt;<br>
&gt; Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 - <br>
&gt; TrackingID#2210140040005999<br>
&gt; <br>
&gt; hi Jeff,<br>
&gt; <br>
&gt; It will do an an answer, though I don't think it is entirely correct.<br>
&gt; The encoding of EOF according to the Huffman table are the bits 0100 which is \
there in the 048d word before the zeroes. 0000 would encode 'w', I think. But, yes, \
the size tells us we're finished.<br> &gt; <br>
&gt; While it's OK to have an arbitrary number of extra bytes at the end of the the \
message, the situation is a whole lot more precarious at the end of a block inside a \
larger message, where there is a need to know exactly how many zeroes to step over, \
or the  next Huffman block will be read from the wrong place (I know that's not quite \
the same question).<br> &gt; <br>
&gt; But don't spend any more time on this one. I am closing in on the answer via \
trial and error and may get back to you with suggestions for MS-XCA.<br> &gt; <br>
&gt; thanks,<br>
&gt; Douglas<br>
&gt; <br>
&gt; <br>
&gt; On 12/11/22 11:04, Jeff McCashland (He/him) wrote:<br>
&gt;&gt; Hi Douglas,<br>
&gt;&gt;<br>
&gt;&gt; The 4 zero bytes are the encoding of the EOF. We don't actually decode these \
bytes. Once we decode the final literal 'z', we realize we've reached the original \
uncompressed size, and stop processing. This is why it's essential to pass in the \
correct size  of the original uncompressed buffer.<br>
&gt;&gt;<br>
&gt;&gt; Let me know if that doesn't fully answer your question.<br>
&gt;&gt;<br>
&gt;&gt; Best regards,<br>
&gt;&gt; Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
&gt;&gt; Protocol Open Specifications Team<br>
&gt;&gt; Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:<br>
&gt;&gt; (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
&gt;&gt; found here:<br>
&gt;&gt; <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp">
 https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp</a><br>
&gt;&gt; o <br>
&gt;&gt; rt.microsoft.com%2Fglobalenglish&amp;amp;data=05%7C01%7Cjeffm%40microsoft.<br>
 &gt;&gt; com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011<br>
&gt;&gt; d <br>
&gt;&gt; b47%7C1%7C0%7C638038033063463462%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w<br>
&gt;&gt; L <br>
&gt;&gt; jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C<br>
&gt;&gt; &amp; <br>
&gt;&gt; amp;sdata=%2B8Kg5XhHodVgvSIaHHpkv%2FUDJ479mgOD1dUVI121Ojw%3D&amp;amp;rese<br>
 &gt;&gt; r<br>
&gt;&gt; ved=0 | Extension 1138300<br>
&gt;&gt;<br>
&gt;&gt; -----Original Message-----<br>
&gt;&gt; From: Jeff McCashland (He/him)<br>
&gt;&gt; Sent: Thursday, October 27, 2022 1:18 PM<br>
&gt;&gt; To: Douglas Bagnall &lt;douglas.bagnall@catalyst.net.nz&gt;;<br>
&gt;&gt; cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
&gt;&gt; &lt;scabrero@samba.org&gt;<br>
&gt;&gt; Cc: Microsoft Support &lt;supportmail@microsoft.com&gt;<br>
&gt;&gt; Subject: RE: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -<br>
&gt;&gt; TrackingID#2210140040005999<br>
&gt;&gt;<br>
&gt;&gt; Hi Douglas,<br>
&gt;&gt;<br>
&gt;&gt; Thank you for the update. I'll look into that aspect.<br>
&gt;&gt;<br>
&gt;&gt; Best regards,<br>
&gt;&gt; Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft <br>
&gt;&gt; Protocol Open Specifications Team<br>
&gt;&gt; Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone:<br>
&gt;&gt; (UTC-08:00) Pacific Time (US and Canada) Local country phone number <br>
&gt;&gt; found here:<br>
&gt;&gt; <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp">
 https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsupp</a><br>
&gt;&gt; o <br>
&gt;&gt; rt.microsoft.com%2Fglobalenglish&amp;amp;data=05%7C01%7Cjeffm%40microsoft.<br>
 &gt;&gt; com%7C1edd50b3f0b44c8db3fb08dac435e6b4%7C72f988bf86f141af91ab2d7cd011<br>
&gt;&gt; d <br>
&gt;&gt; b47%7C1%7C0%7C638038033063619689%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4w<br>
&gt;&gt; L <br>
&gt;&gt; jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C<br>
&gt;&gt; &amp; <br>
&gt;&gt; amp;sdata=8B5w17A6tXD0cerKgk%2FqbMBvj%2Fw9xKvAxqZRhZK3%2FUc%3D&amp;amp;re<br>
 &gt;&gt; s<br>
&gt;&gt; erved=0 | Extension 1138300<br>
&gt;&gt;<br>
&gt;&gt; -----Original Message-----<br>
&gt;&gt; From: Douglas Bagnall &lt;douglas.bagnall@catalyst.net.nz&gt;<br>
&gt;&gt; Sent: Thursday, October 27, 2022 1:09 PM<br>
&gt;&gt; To: Jeff McCashland (He/him) &lt;jeffm@microsoft.com&gt;; <br>
&gt;&gt; cifs-protocol@lists.samba.org; Samuel Cabrero (Samba) <br>
&gt;&gt; &lt;scabrero@samba.org&gt;<br>
&gt;&gt; Cc: Microsoft Support &lt;supportmail@microsoft.com&gt;<br>
&gt;&gt; Subject: Re: [EXTERNAL] [MS-XCA] LZ77+ Huffman example 1 -<br>
&gt;&gt; TrackingID#2210140040005999<br>
&gt;&gt;<br>
&gt;&gt; hi Jeff,<br>
&gt;&gt;<br>
&gt;&gt; I would like to amend his question slightly if I may.<br>
&gt;&gt;<br>
&gt;&gt;&gt; In the first example in Section 3.2, where <br>
&gt;&gt;&gt; &quot;abcdefghijklmnopqrstuvwxyz&quot; is &quot;compressed&quot; into a \
~282 byte <br> &gt;&gt;&gt; sequence ending with<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; d8 52 3e d7 94 11 5b e9 19 5f f9 d6 7c df 8d 04 00 00 00 00<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; where do all the trailing zeros come from?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; They do not encode characters, and from the decoding description in <br>
&gt;&gt;&gt; 2.2.4, we don't read 32 bits at a time except at the start of the <br>
&gt;&gt;&gt; first block, so processing should be well finished before we get to <br>
&gt;&gt;&gt; read these. It seems to violate the &quot;input buffer is finished&quot; \
termination rule.<br> &gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I now think I understand how the zeroes are produced, based on the \
interactions between&nbsp; OutputPosition1, OutputPosition2, and OutputPosition in \
the 2.1.4.3 pseudocode. I can reproduce the result.<br> &gt;&gt;<br>
&gt;&gt; But I still can't understand how they are consumed, based on the terminating \
conditions in the decoding phase (2.2.4). So the &quot;where do they come from&quot; \
part of the question is answered, but the implicit &quot;how are they read&quot; part \
is not.<br> &gt;&gt;<br>
&gt;&gt; Douglas<br>
&gt; <br>
<br>
</div>
</span></font></div>
</body>
</html>



_______________________________________________
cifs-protocol mailing list
cifs-protocol@lists.samba.org
https://lists.samba.org/mailman/listinfo/cifs-protocol

--===============3463292478830449355==--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic