summaryrefslogtreecommitdiff
authorshihong.zheng <shihong.zheng@amlogic.com>2020-04-01 02:51:28 (GMT)
committer Hui Zhang <hui.zhang@amlogic.com>2020-04-02 07:17:32 (GMT)
commitddcf7d63306f7f146170efc1cc2988d401a9bba3 (patch)
treed9e10972583480cb8adcdef0d3e885c64bcf6f84
parent91dfc6e75b8cdeb551487d5fa6341ee2739193a7 (diff)
downloadmedia_modules-ddcf7d63306f7f146170efc1cc2988d401a9bba3.zip
media_modules-ddcf7d63306f7f146170efc1cc2988d401a9bba3.tar.gz
media_modules-ddcf7d63306f7f146170efc1cc2988d401a9bba3.tar.bz2
av1: fix some av1 issues [1/1]
PD#SWPL-18751 Problem: 1. av1 dv get meta data wrong; 2. play av1 pending; 3. hdr video_signal_type and metadata support. Solution: 1. fix set metadata wrong and support hdr metadata upload. 2. get video_signal_type from ucode. 3. waiting dma done and waiting more at end of frame. ucode gerrit id: 103792 ucode commit id: e6fe92e9d Verify: ab311 Change-Id: I785b5c3cb0da3d708c4b42c3d995f5a6763a5575 Signed-off-by: shihong.zheng <shihong.zheng@amlogic.com>
Diffstat
-rw-r--r--[-rwxr-xr-x]drivers/frame_provider/decoder/vav1/av1_global.h2
-rw-r--r--drivers/frame_provider/decoder/vav1/vav1.c177
-rw-r--r--[-rwxr-xr-x]firmware/video_ucode.bin280
3 files changed, 273 insertions, 186 deletions
diff --git a/drivers/frame_provider/decoder/vav1/av1_global.h b/drivers/frame_provider/decoder/vav1/av1_global.h
index e192091..031e5f4 100755..100644
--- a/drivers/frame_provider/decoder/vav1/av1_global.h
+++ b/drivers/frame_provider/decoder/vav1/av1_global.h
@@ -2204,6 +2204,8 @@ typedef union param_u {
SEG_LVL_ALT_LF_V data: seg_lf_info_y[bit8~14]
*/
unsigned short seg_lf_info_c[8];
+ unsigned short video_signal_type;
+ unsigned short color_description;
/*ucode end*/
/*other*/
diff --git a/drivers/frame_provider/decoder/vav1/vav1.c b/drivers/frame_provider/decoder/vav1/vav1.c
index d98c5ec..7334a01 100644
--- a/drivers/frame_provider/decoder/vav1/vav1.c
+++ b/drivers/frame_provider/decoder/vav1/vav1.c
@@ -334,6 +334,7 @@ static const char vav1_dec_id[] = "vav1-dev";
#define PROVIDER_NAME "decoder.av1"
#define MULTI_INSTANCE_PROVIDER_NAME "vdec.av1"
#endif
+#define DV_PROVIDER_NAME "dvbldec"
static const struct vframe_operations_s vav1_vf_provider = {
.peek = vav1_vf_peek,
@@ -350,7 +351,7 @@ static u32 bit_depth_chroma;
static u32 frame_width;
static u32 frame_height;
static u32 video_signal_type;
-
+static u32 force_dv_enable;
static u32 on_no_keyframe_skiped;
#define PROB_SIZE (496 * 2 * 4)
@@ -644,6 +645,8 @@ struct AV1HW_s {
u32 suffix_aux_size;
void *aux_addr;
dma_addr_t aux_phy_addr;
+ char *dv_data_buf;
+ int dv_data_size;
void *prob_buffer_addr;
void *count_buffer_addr;
@@ -1353,10 +1356,10 @@ int aom_bufmgr_init(struct AV1HW_s *hw, struct BuffInfo_s *buf_spec_i,
return 0;
}
-
+/*
struct AV1HW_s av1_decoder;
union param_u av1_param;
-
+*/
/**************************************************
*
*AV1 buffer management end
@@ -1805,10 +1808,11 @@ static void config_aux_buf(struct AV1HW_s *hw)
}
/*
-* dv_meta_flag: 1, dolby meta only; 2, not include dolby meta
+* dv_meta_flag: 1, dolby meta (T35) only; 2, not include dolby meta (T35)
*/
static void set_aux_data(struct AV1HW_s *hw,
- struct PIC_BUFFER_CONFIG_s *pic, unsigned char suffix_flag,
+ char **aux_data_buf, int *aux_data_size,
+ unsigned char suffix_flag,
unsigned char dv_meta_flag)
{
int i;
@@ -1817,7 +1821,7 @@ static void set_aux_data(struct AV1HW_s *hw,
READ_VREG(HEVC_AUX_DATA_SIZE);
unsigned int aux_count = 0;
int aux_size = 0;
- if (pic == NULL || 0 == aux_data_is_avaible(hw))
+ if (0 == aux_data_is_avaible(hw))
return;
if (hw->aux_data_dirty ||
@@ -1846,8 +1850,8 @@ static void set_aux_data(struct AV1HW_s *hw,
}
if (debug & VP9_DEBUG_BUFMGR_MORE) {
av1_print(hw, 0,
- "%s:pic 0x%p old size %d count %d,suf %d dv_flag %d\r\n",
- __func__, pic, pic->aux_data_size,
+ "%s:old size %d count %d,suf %d dv_flag %d\r\n",
+ __func__, *aux_data_size,
aux_count, suffix_flag, dv_meta_flag);
}
if (aux_size > 0 && aux_count > 0) {
@@ -1860,26 +1864,27 @@ static void set_aux_data(struct AV1HW_s *hw,
if (tag != 0 && tag != 0xff) {
if (dv_meta_flag == 0)
heads_size += 8;
- else if (dv_meta_flag == 1 && tag == 0x1)
+ else if (dv_meta_flag == 1 && tag == 0x14)
heads_size += 8;
- else if (dv_meta_flag == 2 && tag != 0x1)
+ else if (dv_meta_flag == 2 && tag != 0x14)
heads_size += 8;
}
}
- new_size = pic->aux_data_size + aux_count + heads_size;
+ new_size = *aux_data_size + aux_count + heads_size;
new_buf = vmalloc(new_size);
if (new_buf) {
unsigned char valid_tag = 0;
unsigned char *h =
new_buf +
- pic->aux_data_size;
+ *aux_data_size;
unsigned char *p = h + 8;
int len = 0;
int padding_len = 0;
- memcpy(new_buf, pic->aux_data_buf, pic->aux_data_size);
- if (pic->aux_data_buf)
- vfree(pic->aux_data_buf);
- pic->aux_data_buf = new_buf;
+ if (*aux_data_buf) {
+ memcpy(new_buf, *aux_data_buf, *aux_data_size);
+ vfree(*aux_data_buf);
+ }
+ *aux_data_buf = new_buf;
for (i = 0; i < aux_count; i += 4) {
int ii;
unsigned char tag = aux_adr[i + 3] >> 8;
@@ -1887,15 +1892,15 @@ static void set_aux_data(struct AV1HW_s *hw,
if (dv_meta_flag == 0)
valid_tag = 1;
else if (dv_meta_flag == 1
- && tag == 0x1)
+ && tag == 0x14)
valid_tag = 1;
else if (dv_meta_flag == 2
- && tag != 0x1)
+ && tag != 0x14)
valid_tag = 1;
else
valid_tag = 0;
if (valid_tag && len > 0) {
- pic->aux_data_size +=
+ *aux_data_size +=
(len + 8);
h[0] = (len >> 24)
& 0xff;
@@ -1936,7 +1941,7 @@ static void set_aux_data(struct AV1HW_s *hw,
}
}
if (len > 0) {
- pic->aux_data_size += (len + 8);
+ *aux_data_size += (len + 8);
h[0] = (len >> 24) & 0xff;
h[1] = (len >> 16) & 0xff;
h[2] = (len >> 8) & 0xff;
@@ -1947,10 +1952,10 @@ static void set_aux_data(struct AV1HW_s *hw,
if (debug & VP9_DEBUG_BUFMGR_MORE) {
av1_print(hw, 0,
"aux: (size %d) suffix_flag %d\n",
- pic->aux_data_size, suffix_flag);
- for (i = 0; i < pic->aux_data_size; i++) {
+ *aux_data_size, suffix_flag);
+ for (i = 0; i < *aux_data_size; i++) {
av1_print_cont(hw, 0,
- "%02x ", pic->aux_data_buf[i]);
+ "%02x ", (*aux_data_buf)[i]);
if (((i + 1) & 0xf) == 0)
av1_print_cont(hw, 0, "\n");
}
@@ -1959,11 +1964,56 @@ static void set_aux_data(struct AV1HW_s *hw,
} else {
av1_print(hw, 0, "new buf alloc failed\n");
- if (pic->aux_data_buf)
- vfree(pic->aux_data_buf);
- pic->aux_data_buf = NULL;
- pic->aux_data_size = 0;
+ if (*aux_data_buf)
+ vfree(*aux_data_buf);
+ *aux_data_buf = NULL;
+ *aux_data_size = 0;
+ }
+ }
+
+}
+
+static void set_dv_data(struct AV1HW_s *hw)
+{
+ set_aux_data(hw, &hw->dv_data_buf,
+ &hw->dv_data_size, 0, 1);
+
+}
+
+static void set_pic_aux_data(struct AV1HW_s *hw,
+ struct PIC_BUFFER_CONFIG_s *pic, unsigned char suffix_flag,
+ unsigned char dv_meta_flag)
+{
+ if (pic == NULL)
+ return;
+ set_aux_data(hw, &pic->aux_data_buf,
+ &pic->aux_data_size, suffix_flag, dv_meta_flag);
+}
+
+static void copy_dv_data(struct AV1HW_s *hw,
+ struct PIC_BUFFER_CONFIG_s *pic)
+{
+ char *new_buf;
+ int new_size;
+ new_size = pic->aux_data_size + hw->dv_data_size;
+ new_buf = vmalloc(new_size);
+ if (new_buf) {
+ if (debug & VP9_DEBUG_BUFMGR_MORE) {
+ av1_print(hw, 0,
+ "%s: (size %d) pic index %d\n",
+ __func__,
+ hw->dv_data_size, pic->index);
+ }
+ if (pic->aux_data_buf) {
+ memcpy(new_buf, pic->aux_data_buf, pic->aux_data_size);
+ vfree(pic->aux_data_buf);
}
+ memcpy(new_buf + pic->aux_data_size, hw->dv_data_buf, hw->dv_data_size);
+ pic->aux_data_size += hw->dv_data_size;
+ pic->aux_data_buf = new_buf;
+ vfree(hw->dv_data_buf);
+ hw->dv_data_buf = NULL;
+ hw->dv_data_size = 0;
}
}
@@ -5153,11 +5203,15 @@ static struct vframe_s *vav1_vf_get(void *op_arg)
if (index < hw->used_buf_num) {
hw->vf_get_count++;
if (debug & AOM_DEBUG_VFRAME) {
+ struct BufferPool_s *pool = hw->pbi->common.buffer_pool;
+ struct PIC_BUFFER_CONFIG_s *pic =
+ &pool->frame_bufs[index].buf;
unsigned long flags;
lock_buffer_pool(hw->pbi->common.buffer_pool, flags);
- av1_print(hw, AOM_DEBUG_VFRAME, "%s index 0x%x type 0x%x w/h %d/%d, pts %d, %lld\n",
+ av1_print(hw, AOM_DEBUG_VFRAME, "%s index 0x%x type 0x%x w/h %d/%d, aux size %d, pts %d, %lld\n",
__func__, vf->index, vf->type,
vf->width, vf->height,
+ pic->aux_data_size,
vf->pts,
vf->pts_us64);
unlock_buffer_pool(hw->pbi->common.buffer_pool, flags);
@@ -6384,9 +6438,19 @@ int av1_continue_decoding(struct AV1HW_s *hw, int obu_type)
/* the case when cm->show_existing_frame is 1 */
/*case 3016*/
av1_print(hw, AOM_DEBUG_HW_MORE,
- "Decoding done (show_existing_frame = %d)\n",
- cm->show_existing_frame);
+ "Decoding done (index=%d, show_existing_frame = %d)\n",
+ cm->cur_frame? cm->cur_frame->buf.index:-1,
+ cm->show_existing_frame
+ );
+ if (cm->cur_frame) {
+ PIC_BUFFER_CONFIG* cur_pic_config = &cm->cur_frame->buf;
+ if (debug &
+ VP9_DEBUG_BUFMGR_MORE)
+ dump_aux_buf(hw);
+ set_pic_aux_data(hw,
+ cur_pic_config, 0, 0);
+ }
config_next_ref_info_hw(hw);
av1_print(hw, AOM_DEBUG_HW_MORE,
@@ -6408,7 +6472,16 @@ int av1_continue_decoding(struct AV1HW_s *hw, int obu_type)
PIC_BUFFER_CONFIG* cur_pic_config = &cm->cur_frame->buf;
PIC_BUFFER_CONFIG* prev_pic_config = &cm->prev_frame->buf;
//struct segmentation_lf *seg_4lf = &hw->seg_4lf_store;
-
+ if (debug &
+ VP9_DEBUG_BUFMGR_MORE)
+ dump_aux_buf(hw);
+ set_dv_data(hw);
+ if (cm->show_frame &&
+ hw->dv_data_buf != NULL)
+ copy_dv_data(hw, cur_pic_config);
+ /* to do:..
+ set_pic_aux_data(hw,
+ cur_pic_config, 0, 2);*/
hw->frame_decoded = 0;
pbi->bufmgr_proc_count++;
if (hw->new_compressed_data == 0) {
@@ -7241,7 +7314,8 @@ static irqreturn_t vav1_isr_thread_fn(int irq, void *data)
or cm->show_existing_frame is 1
*/
av1_print(hw, AOM_DEBUG_HW_MORE,
- "Decoding done, fgs_valid %d data_size 0x%x shiftbyte 0x%x\n",
+ "Decoding done (index %d), fgs_valid %d data_size 0x%x shiftbyte 0x%x\n",
+ cm->cur_frame? cm->cur_frame->buf.index:-1,
hw->fgs_valid,
hw->data_size,
READ_VREG(HEVC_SHIFT_BYTE_COUNT));
@@ -7255,12 +7329,13 @@ static irqreturn_t vav1_isr_thread_fn(int irq, void *data)
reset_process_time(hw);
+ /*
if (debug &
VP9_DEBUG_BUFMGR_MORE)
dump_aux_buf(hw);
set_aux_data(hw,
&cm->cur_frame->buf, 0, 0);
-
+ */
if (/*hw->vf_pre_count == 0 ||*/ hw->low_latency_flag)
av1_postproc(hw);
@@ -7297,16 +7372,18 @@ static irqreturn_t vav1_isr_thread_fn(int irq, void *data)
we assume each packet must and only include one picture of data (LCUs)
or cm->show_existing_frame is 1
*/
- av1_print(hw, AOM_DEBUG_HW_MORE, "Decoding done\n");
- config_next_ref_info_hw(hw);
+ av1_print(hw, AOM_DEBUG_HW_MORE, "Decoding done (index %d)\n",
+ cm->cur_frame? cm->cur_frame->buf.index:-1);
+ config_next_ref_info_hw(hw);
}
#endif
+ /*
if (debug &
VP9_DEBUG_BUFMGR_MORE)
dump_aux_buf(hw);
set_aux_data(hw,
&cm->cur_frame->buf, 0, 0);
-
+ */
if (hw->low_latency_flag) {
av1_postproc(hw);
vdec_profile(hw_to_vdec(hw), VDEC_PROFILE_EVENT_CB);
@@ -7357,9 +7434,11 @@ static irqreturn_t vav1_isr_thread_fn(int irq, void *data)
int next_lcu_size;
av1_bufmgr_process(hw->pbi, &hw->aom_param, 0, obu_type);
- bit_depth_luma = av1_param.p.bit_depth;
- bit_depth_chroma = av1_param.p.bit_depth;
+ bit_depth_luma = hw->aom_param.p.bit_depth;
+ bit_depth_chroma = hw->aom_param.p.bit_depth;
next_lcu_size = ((hw->aom_param.p.seq_flags >> 6) & 0x1) ? 128 : 64;
+ hw->video_signal_type = (hw->aom_param.p.video_signal_type << 16
+ | hw->aom_param.p.color_description);
if (next_lcu_size != hw->current_lcu_size) {
av1_print(hw, AOM_DEBUG_HW_MORE,
@@ -7405,7 +7484,8 @@ static irqreturn_t vav1_isr_thread_fn(int irq, void *data)
we assume each packet must and only include one picture of data (LCUs)
or cm->show_existing_frame is 1
*/
- av1_print(hw, AOM_DEBUG_HW_MORE, "Decoding done\n");
+ av1_print(hw, AOM_DEBUG_HW_MORE, "Decoding done (index %d)\n",
+ cm->cur_frame? cm->cur_frame->buf.index:-1);
}
}
#endif
@@ -8074,7 +8154,7 @@ static s32 vav1_init(struct AV1HW_s *hw)
INIT_WORK(&hw->work, av1_work);
hw->fw = fw;
- return 0;
+ return 0; /*multi instance return */
}
#endif
amhevc_enable();
@@ -8107,12 +8187,15 @@ static s32 vav1_init(struct AV1HW_s *hw)
hw->stat |= STAT_ISR_REG;
- hw->provider_name = PROVIDER_NAME;
+ if (force_dv_enable)
+ hw->provider_name = DV_PROVIDER_NAME;
+ else
+ hw->provider_name = PROVIDER_NAME;
#ifdef MULTI_INSTANCE_SUPPORT
- vf_provider_init(&vav1_vf_prov, PROVIDER_NAME,
+ vf_provider_init(&vav1_vf_prov, hw->provider_name,
&vav1_vf_provider, hw);
vf_reg_provider(&vav1_vf_prov);
- vf_notify_receiver(PROVIDER_NAME, VFRAME_EVENT_PROVIDER_START, NULL);
+ vf_notify_receiver(hw->provider_name, VFRAME_EVENT_PROVIDER_START, NULL);
if (hw->frame_dur != 0) {
if (!is_reset)
vf_notify_receiver(hw->provider_name,
@@ -8121,12 +8204,12 @@ static s32 vav1_init(struct AV1HW_s *hw)
((unsigned long)hw->frame_dur));
}
#else
- vf_provider_init(&vav1_vf_prov, PROVIDER_NAME, &vav1_vf_provider,
+ vf_provider_init(&vav1_vf_prov, hw->provider_name, &vav1_vf_provider,
hw);
vf_reg_provider(&vav1_vf_prov);
- vf_notify_receiver(PROVIDER_NAME, VFRAME_EVENT_PROVIDER_START, NULL);
+ vf_notify_receiver(hw->provider_name, VFRAME_EVENT_PROVIDER_START, NULL);
if (!is_reset)
- vf_notify_receiver(PROVIDER_NAME, VFRAME_EVENT_PROVIDER_FR_HINT,
+ vf_notify_receiver(hw->provider_name, VFRAME_EVENT_PROVIDER_FR_HINT,
(void *)((unsigned long)hw->frame_dur));
#endif
hw->stat |= STAT_VF_HOOK;
@@ -9576,6 +9659,8 @@ static void __exit amvdec_av1_driver_remove_module(void)
}
/****************************************/
+module_param(force_dv_enable, uint, 0664);
+MODULE_PARM_DESC(force_dv_enable, "\n amvdec_av1 force_dv_enable\n");
module_param(bit_depth_luma, uint, 0664);
MODULE_PARM_DESC(bit_depth_luma, "\n amvdec_av1 bit_depth_luma\n");
diff --git a/firmware/video_ucode.bin b/firmware/video_ucode.bin
index b59fb97..4e12a96 100755..100644
--- a/firmware/video_ucode.bin
+++ b/firmware/video_ucode.bin
@@ -1,6 +1,5 @@
-ss\>+g4LS<T0]ct_ͳ}=n<7jolNLaZ#2#GJQ;kD]
-[Ͽbjc$7 +kAQ:U!DV)!J. G=@K0*+,ixgHcXY*/4
-d'%᣾go#:G5RBXFjK?a W5c- lۭ_v!r:yK;KCAP
+8V? KNecJ&9Rh-w*Y0hI-x*VxEOQ~>6S,V̿7_GEDw99I& Y .
+3|M.:8R_\RLm)s;B=Pbڤ I풝<͢,nɴ
 @
@@ -440,7 +439,7 @@ An+,w A
2 ?2
x 3
-
+
 @
I`
@@ -936,7 +935,7 @@ An+,w A
2 ?2
x 3
-
+
 @
@@ -1374,7 +1373,7 @@ An+,w A
2 ?2
x 3
-
+
 @
@@ -1812,7 +1811,7 @@ An+,w A
2 ?2
x 3
-
+
 @
@@ -2245,7 +2244,7 @@ An+,w A
2 ?2
x 3
-
+
 @
@@ -2685,7 +2684,7 @@ An+,w A
2 ?2
x 3
-
+

@x
Ȁ
@@ -2699,7 +2698,7 @@ H
H
@p
6 
-@
+@

%
x
@@ -2710,7 +2709,7 @@ H
H

x
-@
+@
 @
I`
x `
@@ -3199,7 +3198,7 @@ HCP HCX "@Ir
C C @ Ir
C
C 3
-C C B LCH
+C C B LCH
 @
I`
x `
@@ -3687,7 +3686,7 @@ HCP HCX "@Ir
C C @ Ir
C
C 3
-C C B LCH
+C C B LCH
 @
I`
x `
@@ -4175,7 +4174,7 @@ HCP HCX "@Ir
C C @ Ir
C
C 3
-C C B LCH
+C C B LCH
 @
I`
x `
@@ -4663,7 +4662,7 @@ HCP HCX "@Ir
C C @ Ir
C
C 3
-C C B LCH
+C C B LCH
 @
I`
x `
@@ -5151,7 +5150,7 @@ HCP HCX "@Ir
C C @ Ir
C
C 3
-C C B LCH
+C C B LCH
I
v
G
@@ -5244,7 +5243,7 @@ U
T%H @ID
T%H @ID
T%H @ID
-U
+U
I@
v
G
@@ -5346,7 +5345,7 @@ U
T%H @ID
T%H @ID
T%H @ID
-U
+U
I
v
@@ -5441,7 +5440,7 @@ U
T%H @ID
T%H @ID
T%H @ID
-U
+U
I@
v
@@ -5545,7 +5544,7 @@ U
T%H @ID
T%H @ID
T%H @ID
-U
+U
x
B<
@@ -6099,14 +6098,14 @@ I
G 
-G"@ < # 
+G"@ < # 
-
+
x
B<
@@ -6665,7 +6664,7 @@ I
G  @? # @A
-G"@
+G"@
x
B<
@@ -7212,7 +7211,7 @@ I
G 
-G"@ < # 
+G"@ < # 
x
B<
@@ -7771,7 +7770,7 @@ I
G  @? # @A
-G"@
+G"@
x
B<
@@ -8320,10 +8319,10 @@ I
G 
-G"@ < # 
+G"@ < # 
-
+
x
B<
@@ -8872,7 +8871,7 @@ I
G 
-G"@ < # 
+G"@ < # 
I !
`xI@ C
     @
@@ -9270,7 +9269,7 @@ EG
EŅ "  
EG
ņ
-EŇ " 
+EŇ " 
I !
`xI@ C
     @
@@ -9668,7 +9667,7 @@ EG
EŅ "  
EG
ņ
-EŇ " 
+EŇ " 
I !
`xI@ C
     @
@@ -10040,7 +10039,7 @@ EŇ@x
EG
ł
EŃ@
-`
+`
I !
`xI@ C
     @
@@ -10412,7 +10411,7 @@ EŇ@x
EG
ł
EŃ@
-`
+`
I !
`xI@ C
     @
@@ -10810,7 +10809,7 @@ EG
EŅ "  
EG
ņ
-EŇ " 
+EŇ " 
I !
`iI@ C
     @
@@ -11182,7 +11181,7 @@ EŇ@x
EG
ł
EŃ@
-`
+`
I !
`xI@ C
     @
@@ -11554,7 +11553,7 @@ EŇ@x
EG
ł
EŃ@
-`
+`
I !
`iI@ C
     @
@@ -11952,7 +11951,7 @@ EG
EŅ "  
EG
ņ
-EŇ " 
+EŇ " 
I !
`xI@ C
     @
@@ -12324,7 +12323,7 @@ EŇ@x
EG
ł
EŃ@
-`
+`
I !
`xI@ C
     @
@@ -12722,7 +12721,7 @@ EG
EŅ "  
EG
ņ
-EŇ " 
+EŇ " 

@4x
@@ -12903,7 +12902,7 @@ n
J` 
-J` 
+J` 
@@ -13101,12 +13100,12 @@ n
J` 
-J` 
-
-
+J` 
+
+
+@+
-
-
+
+
`!
@@ -13122,16 +13121,17 @@ _ @ _ ^AI o
g ^
-@
-
+@
+
o
-
-
-
-H H ȃ H  ȄHH"ȅ
+
+
+
+@
+H H ȃ H  ȄHH"ȅ
a )
a *
@@ -13148,9 +13148,9 @@ a

-!
+!n
- A-;: -+6 ,!
-@i
+g
C
k
@@ -13159,16 +13159,16 @@ l,
lۂm@%
,-lۂm@$
`
-x
+
+`
-
+
@
-
-
-m
+
+
+m
o
-
+
o
@
@@ -13184,9 +13184,9 @@ m
J` 
6 J
@
-@
+
x  A A AH> 
-/ I
+
 AHR6 I
 A AHR6 I
 AHR6 I
@@ -13194,8 +13194,8 @@ m
( N AHR6 ""
 AH> NH I"
I@
-
-c
+g
+
 AH> 
 AH>
 AHB8 M
@@ -13214,15 +13214,16 @@ I@
 A2: 
 A
-( AH> @a
-
-
+( AH> H P H @a
+
+@ H  P JJ@#
+
Ka
@a
I
K
- Aˑ  ɒ@HH 
+ Aˑ  ɒ@HH 
 I  
@@ -13230,7 +13231,7 @@ K

@
`
-! @x
+" @x
I
@
@@ -13256,7 +13257,7 @@ J `H
ȲK!
 ȲK
-
+ K
 M
@0x H @a
? AH0 `
@@ -13314,29 +13315,29 @@ KJ A @H
 AH> I
x JJr@  A> 
- 
+ 
@@KJ2@ J@
 
H
-
+a P
P@@
-x LN
+x LN
@@K

@ 
-_ P
+@[ P
P@
H
-
+
x H @
-
+
- H@  H_IHP ]HrP Hr` ɗ [HHrP Hr` Hrp ɗ \ AH> @
+ H
x a
@@ -13369,7 +13370,7 @@ x H AHb4 b( JbP  @
I A> JB
-I@L K @K J K@J 
+I
 
H@f
 AH"< I2
@@ -13392,10 +13393,10 @@ $@$@"L  !
-
+

lA
-
+
 AH> R 
 a
@!
@@ -13407,15 +13408,15 @@ $@$@"L  !
@x H `
@
AI> 
- ~ >
+ ~ ?
I
- AH2:
+ AH2:
K8L  a L D H" Ia
 ˲ I 2P   @b
-˳ ˳
+˳ ˳
- @0
+ 
#2
@@ -13435,7 +13436,7 @@ J@@Q

#
4 J2
- ,2 .A2@ I
+ ,2 .A2@ I
 H

@@ -13463,11 +13464,11 @@ a
^

`
-
+
A`
-ʣ "D ȁ
+ʣ "D A
- @ _I ` `AI _A
+ `AI
@@ -13504,7 +13505,7 @@ I
 @d
LF LH
-!^HX _Bx !i"j- ȇ $o
+!^HX _Bx !i"j- ȇ $o 


`
@@ -13572,8 +13573,7 @@ N@
A`
-a
-8M@
+a
<@Ha


@@ -13585,7 +13585,7 @@ C@
B
B
-@
+@

@@ -13881,7 +13881,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 

@@ -14178,7 +14178,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 

@@ -14475,7 +14475,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 

@@ -14771,7 +14771,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 

@@ -14959,7 +14959,7 @@ D@ @
@x HR& b@I"@J@Hb
-
+

@@ -15149,7 +15149,7 @@ D@ @
@x HR& b@I"@J@Hb
-
+

@@ -15337,7 +15337,7 @@ D@ @
@x HR& b@I"@J@Hb
-
+

@@ -15527,7 +15527,7 @@ D@ @
@x HR& b@I"@J@Hb
-
+
y
G@,
%
@@ -15845,7 +15845,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 
G+
%
@@ -16137,7 +16137,7 @@ G
@
!
G
-
+
G+
%
@@ -16429,7 +16429,7 @@ G
@
!
G
-
+
G+
%
@@ -16721,7 +16721,7 @@ G
@
!
G
-
+
y
G@,
%
@@ -17039,7 +17039,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 
y
G@,
%
@@ -17357,7 +17357,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 
y
G@,
%
@@ -17675,7 +17675,7 @@ G
 *C(I(
,J@($ ,*F ( ) ("L(h ! ( 튂( (
,J@ ($ ("Lh ! ( 튂(  ,
-("Lh ! ( 튂( 
+("Lh ! ( 튂( 
G+
%
@@ -17967,7 +17967,7 @@ G
@
!
G
-
+
x
`
x
@@ -18182,7 +18182,7 @@ E 
-
+
x
`
x
@@ -18397,7 +18397,7 @@ E 
-
+
x
`
x
@@ -18619,7 +18619,7 @@ E 
-
+
 @
I`
@x `
@@ -19009,7 +19009,7 @@ H
*AL+CLh j@
j
-
+
 @
I`
@@ -19399,7 +19399,7 @@ H
*AL+CLh j@
j
-
+
 @
I`
@x `
@@ -19789,7 +19789,7 @@ H
*AL+CLh j@
j
-
+
 @
I`
/y `
@@ -20238,7 +20238,7 @@ H
*AL+CLh j@
j
-
+
 @
I`
@x `
@@ -20622,7 +20622,7 @@ H
*AL+CLh j@
j
-
+
 @
I`
@@ -21012,7 +21012,7 @@ H
*AL+CLh j@
j
-
+
3
 
@@ -21842,7 +21842,7 @@ q 
@

i
-
+
3
 
@@ -22673,7 +22673,7 @@ q 
@

i
-
+
@ `
@@ -23322,7 +23322,7 @@ J2 x 
0
`
-
+
@ `
@@ -23971,7 +23971,7 @@ J2 x 
0
`
-
+
@ `
@@ -24620,7 +24620,7 @@ J2 x 
0
`
-
+
@ `
@@ -25269,7 +25269,7 @@ J2 x 
0
`
-
+
@x
@ `
@x
@@ -25916,7 +25916,7 @@ J2 x 
0
`
-
+

x
@x
@@ -26449,7 +26449,7 @@ H$`
JI
JI'@BH
-=
+=

x
x
@@ -26988,7 +26988,7 @@ H$`
'
-@
+@

@
x
@@ -27515,7 +27515,7 @@ H$`
'
-@
+@

x
x
@@ -28045,7 +28045,7 @@ H$`
JI
JI'@BH
-=
+=

x
@x
@@ -28578,7 +28578,7 @@ H$`
JI
JI'@BH
-=
+=

x
@x
@@ -29111,7 +29111,7 @@ H$`
JI
JI'@BH
-=
+=

x
@x
@@ -29644,7 +29644,7 @@ H$`
JI
JI'@BH
-=
+=
y

@@ -30259,7 +30259,7 @@ H
-
+
+@+@
@@ -30583,7 +30583,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
+@+@
@@ -30905,7 +30905,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
+@+@
@@ -31224,7 +31224,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
+@+@
@@ -31543,7 +31543,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
+@+@
@@ -31865,7 +31865,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
+@+@
@@ -32190,7 +32190,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
+@+@
@@ -32509,7 +32509,7 @@ a . AB+@+@
-J`  JJ` 
+J`  JJ` 
FL  CL R@ 
I`
x `
@@ -32737,7 +32737,7 @@ E===  E DL>L
D@ @
-x HR& b@I"@J@Hb
+x HR& b@I"@J@Hb
FL  CL R@ 
I`
x `
@@ -32963,7 +32963,7 @@ E===  E DL>L
D@ @
-x HR& b@I"@J@Hb
+x HR& b@I"@J@Hb
FL  CL R@ 
I`
x `
@@ -33191,7 +33191,7 @@ E===  E DL>L
D@ @
-x HR& b@I"@J@Hb
+x HR& b@I"@J@Hb
FL  CL R@ 
I`
x `