Slide 22
Slide 22 text
compress/flate.huffman
B
itW
riter.write
B
l
ock
H
uff()
/
/ w
r
i
t
e
B
l
o
c
k
H
u
f
f e
n
c
o
d
e
s a b
l
o
c
k o
f b
y
t
e
s a
s e
i
t
h
e
r
/
/ H
u
f
f
m
a
n e
n
c
o
d
e
d l
i
t
e
r
a
l
s o
r u
n
c
o
m
p
r
e
s
s
e
d b
y
t
e
s i
f t
h
e
/
/ r
e
s
u
l
t
s o
n
l
y g
a
i
n
s v
e
r
y l
i
t
t
l
e f
r
o
m c
o
m
p
r
e
s
s
i
o
n
.
f
u
n
c (
w *
h
u
f
f
m
a
n
B
i
t
W
r
i
t
e
r
) w
r
i
t
e
B
l
o
c
k
H
u
f
f
(
e
o
f b
o
o
l
, i
n
p
u
t [
]
b
y
t
e
) {
i
f w
.
e
r
r !
= n
i
l {
r
e
t
u
r
n
}
/
/ C
l
e
a
r h
i
s
t
o
g
r
a
m
f
o
r i :
= r
a
n
g
e w
.
l
i
t
e
r
a
l
F
r
e
q {
w
.
l
i
t
e
r
a
l
F
r
e
q
[
i
] = 0
}
/
/ A
d
d e
v
e
r
y
t
h
i
n
g a
s l
i
t
e
r
a
l
s
h
i
s
t
o
g
r
a
m
(
i
n
p
u
t
, w
.
l
i
t
e
r
a
l
F
r
e
q
)
w
.
l
i
t
e
r
a
l
F
r
e
q
[
e
n
d
B
l
o
c
k
M
a
r
k
e
r
] = 1
c
o
n
s
t n
u
m
L
i
t
e
r
a
l
s = e
n
d
B
l
o
c
k
M
a
r
k
e
r + 1
c
o
n
s
t n
u
m
O
f
f
s
e
t
s = 1
w
.
l
i
t
e
r
a
l
E
n
c
o
d
i
n
g
.
g
e
n
e
r
a
t
e
(
w
.
l
i
t
e
r
a
l
F
r
e
q
, 1
5
)
/
/ F
i
g
u
r
e o
u
t s
m
a
l
l
e
s
t c
o
d
e
.
/
/ A
l
w
a
y
s u
s
e d
y
n
a
m
i
c H
u
f
f
m
a
n o
r S
t
o
r
e
v
a
r n
u
m
C
o
d
e
g
e
n
s i
n
t
/
/ G
e
n
e
r
a
t
e c
o
d
e
g
e
n a
n
d c
o
d
e
g
e
n
F
r
e
q
u
e
n
c
i
e
s
, w
h
i
c
h i
n
d
i
c
a
t
e
s h
o
w t
o e
n
c
o
d
e
/
/ t
h
e l
i
t
e
r
a
l
E
n
c
o
d
i
n
g a
n
d t
h
e o
f
f
s
e
t
E
n
c
o
d
i
n
g
.
w
.
g
e
n
e
r
a
t
e
C
o
d
e
g
e
n
(
n
u
m
L
i
t
e
r
a
l
s
, n
u
m
O
f
f
s
e
t
s
, w
.
l
i
t
e
r
a
l
E
n
c
o
d
i
n
g
, h
u
f
f
O
f
f
s
e
t
)
w
.
c
o
d
e
g
e
n
E
n
c
o
d
i
n
g
.
g
e
n
e
r
a
t
e
(
w
.
c
o
d
e
g
e
n
F
r
e
q
[
:
]
, 7
)
s
i
z
e
, n
u
m
C
o
d
e
g
e
n
s :
= w
.
d
y
n
a
m
i
c
S
i
z
e
(
w
.
l
i
t
e
r
a
l
E
n
c
o
d
i
n
g
, h
u
f
f
O
f
f
s
e
t
, 0
)
/
/ S
t
o
r
e b
y
t
e
s
, i
f w
e d
o
n
'
t g
e
t a r
e
a
s
o
n
a
b
l
e i
m
p
r
o
v
e
m
e
n
t
.
i
f s
s
i
z
e
, s
t
o
r
a
b
l
e :
= w
.
s
t
o
r
e
d
S
i
z
e
(
i
n
p
u
t
)
; s
t
o
r
a
b
l
e &
& s
s
i
z
e < (
s
i
z
e
+
s
i
z
e
>
>
4
) {
w
.
w
r
i
t
e
S
t
o
r
e
d
H
e
a
d
e
r
(
l
e
n
(
i
n
p
u
t
)
, e
o
f
)
w
.
w
r
i
t
e
B
y
t
e
s
(
i
n
p
u
t
)
r
e
t
u
r
n
}
/
/ H
u
f
f
m
a
n
.
w
.
w
r
i
t
e
D
y
n
a
m
i
c
H
e
a
d
e
r
(
n
u
m
L
i
t
e
r
a
l
s
, n
u
m
O
f
f
s
e
t
s
, n
u
m
C
o
d
e
g
e
n
s
, e
o
f
)
e
n
c
o
d
i
n
g :
= w
.
l
i
t
e
r
a
l
E
n
c
o
d
i
n
g
.
c
o
d
e
s
[
:
2
5
7
]
n :
= w
.
n
b
y
t
e
s
f
o
r _
, t :
= r
a
n
g
e i
n
p
u
t {
/
/ B
i
t
w
r
i
t
i
n
g i
n
l
i
n
e
d
, ~
3
0
% s
p
e
e
d
u
p
c :
= e
n
c
o
d
i
n
g
[
t
]
w
.
b
i
t
s |
= u
i
n
t
6
4
(
c
.
c
o
d
e
) <
< w
.
n
b
i
t
s
w
.
n
b
i
t
s +
= u
i
n
t
(
c
.
l
e
n
)
i
f w
.
n
b
i
t
s < 4
8 {
c
o
n
t
i
n
u
e
}
/
/ S
t
o
r
e 6 b
y
t
e
s
b
i
t
s :
= w
.
b
i
t
s
w
.
b
i
t
s >
>
= 4
8
w
.
n
b
i
t
s -
= 4
8
b
y
t
e
s :
= w
.
b
y
t
e
s
[
n : n
+
6
]
b
y
t
e
s
[
0
] = b
y
t
e
(
b
i
t
s
)
b
y
t
e
s
[
1
] = b
y
t
e
(
b
i
t
s >
> 8
)
b
y
t
e
s
[
2
] = b
y
t
e
(
b
i
t
s >
> 1
6
)
b
y
t
e
s
[
3
] = b
y
t
e
(
b
i
t
s >
> 2
4
)
b
y
t
e
s
[
4
] = b
y
t
e
(
b
i
t
s >
> 3
2
)
b
y
t
e
s
[
5
] = b
y
t
e
(
b
i
t
s >
> 4
0
)
n +
= 6
i
f n < b
u
f
f
e
r
F
l
u
s
h
S
i
z
e {
c
o
n
t
i
n
u
e
}
w
.
w
r
i
t
e
(
w
.
b
y
t
e
s
[
:
n
]
)
i
f w
.
e
r
r !
= n
i
l {
r
e
t
u
r
n /
/ R
e
t
u
r
n e
a
r
l
y i
n t
h
e e
v
e
n
t o
f w
r
i
t
e f
a
i
l
u
r
e
s
}
n = 0
}
w
.
n
b
y
t
e
s = n
w
.
w
r
i
t
e
C
o
d
e
(
e
n
c
o
d
i
n
g
[
e
n
d
B
l
o
c
k
M
a
r
k
e
r
]
)
}