diff options
| author | leshe4ka46 <alex9102naid1@ya.ru> | 2025-10-19 14:47:59 +0300 |
|---|---|---|
| committer | leshe4ka46 <alex9102naid1@ya.ru> | 2025-10-19 14:47:59 +0300 |
| commit | e17a425dfb3382310fb5863f516dacdca9f44956 (patch) | |
| tree | 7babb3048d0eb20aa1e68e9b29c2acfa794ab96f /unipdf/internal/jbig2/decoder | |
| parent | 091963a50c3bb2926f559f01c49e8f5bd03d2bfd (diff) | |
fuck the unipdf licencing
Diffstat (limited to 'unipdf/internal/jbig2/decoder')
| -rw-r--r-- | unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go | 36 | ||||
| -rw-r--r-- | unipdf/internal/jbig2/decoder/decoder.go | 22 | ||||
| -rw-r--r-- | unipdf/internal/jbig2/decoder/huffman/huffman.go | 43 | ||||
| -rw-r--r-- | unipdf/internal/jbig2/decoder/mmr/mmr.go | 50 |
4 files changed, 151 insertions, 0 deletions
diff --git a/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go b/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go new file mode 100644 index 0000000..d96d7a5 --- /dev/null +++ b/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go @@ -0,0 +1,36 @@ +// +// Copyright 2020 FoxyUtils ehf. All rights reserved. +// +// This is a commercial product and requires a license to operate. +// A trial license can be obtained at https://unidoc.io +// +// DO NOT EDIT: generated by unitwist Go source code obfuscator. +// +// Use of this source code is governed by the UniDoc End User License Agreement +// terms that can be accessed at https://unidoc.io/eula/ + +package arithmetic ;import (_a "fmt";_b "github.com/unidoc/unipdf/v4/common";_fe "github.com/unidoc/unipdf/v4/internal/bitwise";_fc "github.com/unidoc/unipdf/v4/internal/jbig2/internal";_f "io";_e "strings";);var (_fb =[][4]uint32 {{0x5601,1,1,1},{0x3401,2,6,0},{0x1801,3,9,0},{0x0AC1,4,12,0},{0x0521,5,29,0},{0x0221,38,33,0},{0x5601,7,6,1},{0x5401,8,14,0},{0x4801,9,14,0},{0x3801,10,14,0},{0x3001,11,17,0},{0x2401,12,18,0},{0x1C01,13,20,0},{0x1601,29,21,0},{0x5601,15,14,1},{0x5401,16,14,0},{0x5101,17,15,0},{0x4801,18,16,0},{0x3801,19,17,0},{0x3401,20,18,0},{0x3001,21,19,0},{0x2801,22,19,0},{0x2401,23,20,0},{0x2201,24,21,0},{0x1C01,25,22,0},{0x1801,26,23,0},{0x1601,27,24,0},{0x1401,28,25,0},{0x1201,29,26,0},{0x1101,30,27,0},{0x0AC1,31,28,0},{0x09C1,32,29,0},{0x08A1,33,30,0},{0x0521,34,31,0},{0x0441,35,32,0},{0x02A1,36,33,0},{0x0221,37,34,0},{0x0141,38,35,0},{0x0111,39,36,0},{0x0085,40,37,0},{0x0049,41,38,0},{0x0025,42,39,0},{0x0015,43,40,0},{0x0009,44,41,0},{0x0005,45,42,0},{0x0001,45,43,0},{0x5601,46,46,0}}; +);func (_ade *Decoder )DecodeBit (stats *DecoderStats )(int ,error ){var (_fac int ;_dd =_fb [stats .cx ()][0];_df =int32 (stats .cx ()););defer func (){_ade ._fcg ++}();_ade ._cb -=_dd ;if (_ade ._d >>16)< uint64 (_dd ){_fac =_ade .lpsExchange (stats ,_df ,_dd ); +if _cd :=_ade .renormalize ();_cd !=nil {return 0,_cd ;};}else {_ade ._d -=uint64 (_dd )<<16;if (_ade ._cb &0x8000)==0{_fac =_ade .mpsExchange (stats ,_df );if _ab :=_ade .renormalize ();_ab !=nil {return 0,_ab ;};}else {_fac =int (stats .getMps ());}; +};return _fac ,nil ;};func (_de *Decoder )DecodeInt (stats *DecoderStats )(int32 ,error ){var (_dee ,_dg int32 ;_cde ,_edf ,_ge int ;_abc error ;);if stats ==nil {stats =NewStats (512,1);};_de ._bb =1;_edf ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ; +};_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats ); +if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_ge =32;_dg =4436;}else {_ge =12;_dg =340;};}else {_ge =8;_dg =84;};}else {_ge =6;_dg =20;};}else {_ge =4;_dg =4;};}else {_ge =2; +_dg =0;};for _dga :=0;_dga < _ge ;_dga ++{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};_dee =(_dee <<1)|int32 (_cde );};_dee +=_dg ;if _edf ==0{return _dee ,nil ;}else if _edf ==1&&_dee > 0{return -_dee ,nil ;};return 0,_fc .ErrOOB ; +};func (_ggg *DecoderStats )Reset (){for _ca :=0;_ca < len (_ggg ._dfg );_ca ++{_ggg ._dfg [_ca ]=0;_ggg ._bad [_ca ]=0;};};func (_cc *Decoder )mpsExchange (_dde *DecoderStats ,_ccf int32 )int {_gb :=_dde ._bad [_dde ._ba ];if _cc ._cb < _fb [_ccf ][0]{if _fb [_ccf ][3]==1{_dde .toggleMps (); +};_dde .setEntry (int (_fb [_ccf ][2]));return int (1-_gb );};_dde .setEntry (int (_fb [_ccf ][1]));return int (_gb );};type DecoderStats struct{_ba int32 ;_fba int32 ;_dfg []byte ;_bad []byte ;};func (_ef *Decoder )init ()error {_ef ._eg =_ef ._aa .AbsolutePosition (); +_cbf ,_ff :=_ef ._aa .ReadByte ();if _ff !=nil {_b .Log .Debug ("B\u0075\u0066\u0066\u0065\u0072\u0030 \u0072\u0065\u0061\u0064\u0042\u0079\u0074\u0065\u0020f\u0061\u0069\u006ce\u0064.\u0020\u0025\u0076",_ff );return _ff ;};_ef ._ad =_cbf ;_ef ._d =uint64 (_cbf )<<16; +if _ff =_ef .readByte ();_ff !=nil {return _ff ;};_ef ._d <<=7;_ef ._fa -=7;_ef ._cb =0x8000;_ef ._fcg ++;return nil ;};type Decoder struct{ContextSize []uint32 ;ReferedToContextSize []uint32 ;_aa *_fe .Reader ;_ad uint8 ;_d uint64 ;_cb uint32 ;_bb int64 ; +_fa int32 ;_fcg int32 ;_eg int64 ;};func (_cg *Decoder )DecodeIAID (codeLen uint64 ,stats *DecoderStats )(int64 ,error ){_cg ._bb =1;var _ee uint64 ;for _ee =0;_ee < codeLen ;_ee ++{stats .SetIndex (int32 (_cg ._bb ));_feg ,_adc :=_cg .DecodeBit (stats ); +if _adc !=nil {return 0,_adc ;};_cg ._bb =(_cg ._bb <<1)|int64 (_feg );};_ac :=_cg ._bb -(1<<codeLen );return _ac ,nil ;};func (_eff *Decoder )decodeIntBit (_abd *DecoderStats )(int ,error ){_abd .SetIndex (int32 (_eff ._bb ));_ag ,_bd :=_eff .DecodeBit (_abd ); +if _bd !=nil {_b .Log .Debug ("\u0041\u0072\u0069\u0074\u0068\u006d\u0065t\u0069\u0063\u0044e\u0063\u006f\u0064e\u0072\u0020'\u0064\u0065\u0063\u006f\u0064\u0065I\u006etB\u0069\u0074\u0027\u002d\u003e\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0042\u0069\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_bd ); +return _ag ,_bd ;};if _eff ._bb < 256{_eff ._bb =((_eff ._bb <<uint64 (1))|int64 (_ag ))&0x1ff;}else {_eff ._bb =(((_eff ._bb <<uint64 (1)|int64 (_ag ))&511)|256)&0x1ff;};return _ag ,nil ;};func (_ea *DecoderStats )Overwrite (dNew *DecoderStats ){for _cgb :=0; +_cgb < len (_ea ._dfg );_cgb ++{_ea ._dfg [_cgb ]=dNew ._dfg [_cgb ];_ea ._bad [_cgb ]=dNew ._bad [_cgb ];};};func (_cgg *Decoder )lpsExchange (_gbb *DecoderStats ,_ddf int32 ,_bbf uint32 )int {_bf :=_gbb .getMps ();if _cgg ._cb < _bbf {_gbb .setEntry (int (_fb [_ddf ][1])); +_cgg ._cb =_bbf ;return int (_bf );};if _fb [_ddf ][3]==1{_gbb .toggleMps ();};_gbb .setEntry (int (_fb [_ddf ][2]));_cgg ._cb =_bbf ;return int (1-_bf );};func (_eec *Decoder )readByte ()error {if _eec ._aa .AbsolutePosition ()> _eec ._eg {if _ ,_eda :=_eec ._aa .Seek (-1,_f .SeekCurrent ); +_eda !=nil {return _eda ;};};_dfb ,_db :=_eec ._aa .ReadByte ();if _db !=nil {return _db ;};_eec ._ad =_dfb ;if _eec ._ad ==0xFF{_abe ,_bc :=_eec ._aa .ReadByte ();if _bc !=nil {return _bc ;};if _abe > 0x8F{_eec ._d +=0xFF00;_eec ._fa =8;if _ ,_gd :=_eec ._aa .Seek (-2,_f .SeekCurrent ); +_gd !=nil {return _gd ;};}else {_eec ._d +=uint64 (_abe )<<9;_eec ._fa =7;};}else {_dfb ,_db =_eec ._aa .ReadByte ();if _db !=nil {return _db ;};_eec ._ad =_dfb ;_eec ._d +=uint64 (_eec ._ad )<<8;_eec ._fa =8;};_eec ._d &=0xFFFFFFFFFF;return nil ;};func (_efg *DecoderStats )getMps ()byte {return _efg ._bad [_efg ._ba ]}; +func (_dba *DecoderStats )cx ()byte {return _dba ._dfg [_dba ._ba ]};func (_cdb *DecoderStats )Copy ()*DecoderStats {_bg :=&DecoderStats {_fba :_cdb ._fba ,_dfg :make ([]byte ,_cdb ._fba )};copy (_bg ._dfg ,_cdb ._dfg );return _bg ;};func (_cbc *DecoderStats )toggleMps (){_cbc ._bad [_cbc ._ba ]^=1}; +func (_eea *DecoderStats )SetIndex (index int32 ){_eea ._ba =index };func New (r *_fe .Reader )(*Decoder ,error ){_ed :=&Decoder {_aa :r ,ContextSize :[]uint32 {16,13,10,10},ReferedToContextSize :[]uint32 {13,10}};if _g :=_ed .init ();_g !=nil {return nil ,_g ; +};return _ed ,nil ;};func (_cbe *Decoder )renormalize ()error {for {if _cbe ._fa ==0{if _egg :=_cbe .readByte ();_egg !=nil {return _egg ;};};_cbe ._cb <<=1;_cbe ._d <<=1;_cbe ._fa --;if (_cbe ._cb &0x8000)!=0{break ;};};_cbe ._d &=0xffffffff;return nil ; +};func (_dbg *DecoderStats )String ()string {_deb :=&_e .Builder {};_a .Fprintf (_deb ,"S\u0074\u0061\u0074\u0073\u003a\u0020\u0020\u0025\u0064\u000a",len (_dbg ._dfg ));for _ce ,_ged :=range _dbg ._dfg {if _ged !=0{_a .Fprintf (_deb ,"N\u006f\u0074\u0020\u007aer\u006f \u0061\u0074\u003a\u0020\u0025d\u0020\u002d\u0020\u0025\u0064\u000a",_ce ,_ged ); +};};return _deb .String ();};func NewStats (contextSize int32 ,index int32 )*DecoderStats {return &DecoderStats {_ba :index ,_fba :contextSize ,_dfg :make ([]byte ,contextSize ),_bad :make ([]byte ,contextSize )};};func (_eaa *DecoderStats )setEntry (_faf int ){_ga :=byte (_faf &0x7f); +_eaa ._dfg [_eaa ._ba ]=_ga };
\ No newline at end of file diff --git a/unipdf/internal/jbig2/decoder/decoder.go b/unipdf/internal/jbig2/decoder/decoder.go new file mode 100644 index 0000000..6642ff3 --- /dev/null +++ b/unipdf/internal/jbig2/decoder/decoder.go @@ -0,0 +1,22 @@ +// +// Copyright 2020 FoxyUtils ehf. All rights reserved. +// +// This is a commercial product and requires a license to operate. +// A trial license can be obtained at https://unidoc.io +// +// DO NOT EDIT: generated by unitwist Go source code obfuscator. +// +// Use of this source code is governed by the UniDoc End User License Agreement +// terms that can be accessed at https://unidoc.io/eula/ + +package decoder ;import (_b "github.com/unidoc/unipdf/v4/internal/bitwise";_df "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_c "github.com/unidoc/unipdf/v4/internal/jbig2/document";_e "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_d "image"; +);func (_eg *Decoder )DecodePageImage (pageNumber int )(_d .Image ,error ){const _ca ="\u0064\u0065\u0063od\u0065\u0072\u002e\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0067\u0065\u0049\u006d\u0061\u0067\u0065";_fa ,_ae :=_eg .decodePageImage (pageNumber ); +if _ae !=nil {return nil ,_e .Wrap (_ae ,_ca ,"");};return _fa ,nil ;};func (_ce *Decoder )decodePage (_be int )([]byte ,error ){const _fb ="\u0064\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0067\u0065";if _be < 0{return nil ,_e .Errorf (_fb ,"\u0069n\u0076\u0061\u006c\u0069d\u0020\u0070\u0061\u0067\u0065 \u006eu\u006db\u0065\u0072\u003a\u0020\u0027\u0025\u0064'",_be ); +};if _be > int (_ce ._af .NumberOfPages ){return nil ,_e .Errorf (_fb ,"p\u0061\u0067\u0065\u003a\u0020\u0027%\u0064\u0027\u0020\u006e\u006f\u0074 \u0066\u006f\u0075\u006e\u0064\u0020\u0069n\u0020\u0074\u0068\u0065\u0020\u0064\u0065\u0063\u006f\u0064e\u0072",_be ); +};_aeb ,_fg :=_ce ._af .GetPage (_be );if _fg !=nil {return nil ,_e .Wrap (_fg ,_fb ,"");};_dccg ,_fg :=_aeb .GetBitmap ();if _fg !=nil {return nil ,_e .Wrap (_fg ,_fb ,"");};_dccg .InverseData ();if !_ce ._ge .UnpaddedData {return _dccg .Data ,nil ;}; +return _dccg .GetUnpaddedData ();};func (_dcc *Decoder )PageNumber ()(int ,error ){const _cd ="\u0044e\u0063o\u0064\u0065\u0072\u002e\u0050a\u0067\u0065N\u0075\u006d\u0062\u0065\u0072";if _dcc ._af ==nil {return 0,_e .Error (_cd ,"d\u0065\u0063\u006f\u0064\u0065\u0072 \u006e\u006f\u0074\u0020\u0069\u006e\u0069\u0074\u0069a\u006c\u0069\u007ae\u0064 \u0079\u0065\u0074"); +};return int (_dcc ._af .NumberOfPages ),nil ;};func (_dc *Decoder )DecodeNextPage ()([]byte ,error ){_dc ._g ++;_gea :=_dc ._g ;return _dc .decodePage (_gea );};func (_eb *Decoder )decodePageImage (_fc int )(_d .Image ,error ){const _gd ="\u0064e\u0063o\u0064\u0065\u0050\u0061\u0067\u0065\u0049\u006d\u0061\u0067\u0065"; +if _fc < 0{return nil ,_e .Errorf (_gd ,"\u0069n\u0076\u0061\u006c\u0069d\u0020\u0070\u0061\u0067\u0065 \u006eu\u006db\u0065\u0072\u003a\u0020\u0027\u0025\u0064'",_fc );};if _fc > int (_eb ._af .NumberOfPages ){return nil ,_e .Errorf (_gd ,"p\u0061\u0067\u0065\u003a\u0020\u0027%\u0064\u0027\u0020\u006e\u006f\u0074 \u0066\u006f\u0075\u006e\u0064\u0020\u0069n\u0020\u0074\u0068\u0065\u0020\u0064\u0065\u0063\u006f\u0064e\u0072",_fc ); +};_ebe ,_de :=_eb ._af .GetPage (_fc );if _de !=nil {return nil ,_e .Wrap (_de ,_gd ,"");};_egb ,_de :=_ebe .GetBitmap ();if _de !=nil {return nil ,_e .Wrap (_de ,_gd ,"");};_egb .InverseData ();return _egb .ToImage (),nil ;};func Decode (input []byte ,parameters Parameters ,globals *_c .Globals )(*Decoder ,error ){_fge :=_b .NewReader (input ); +_ga ,_ab :=_c .DecodeDocument (_fge ,globals );if _ab !=nil {return nil ,_ab ;};return &Decoder {_aa :_fge ,_af :_ga ,_ge :parameters },nil ;};func (_f *Decoder )DecodePage (pageNumber int )([]byte ,error ){return _f .decodePage (pageNumber )};type Parameters struct{UnpaddedData bool ; +Color _df .Color ;};type Decoder struct{_aa *_b .Reader ;_af *_c .Document ;_g int ;_ge Parameters ;};
\ No newline at end of file diff --git a/unipdf/internal/jbig2/decoder/huffman/huffman.go b/unipdf/internal/jbig2/decoder/huffman/huffman.go new file mode 100644 index 0000000..49952a7 --- /dev/null +++ b/unipdf/internal/jbig2/decoder/huffman/huffman.go @@ -0,0 +1,43 @@ +// +// Copyright 2020 FoxyUtils ehf. All rights reserved. +// +// This is a commercial product and requires a license to operate. +// A trial license can be obtained at https://unidoc.io +// +// DO NOT EDIT: generated by unitwist Go source code obfuscator. +// +// Use of this source code is governed by the UniDoc End User License Agreement +// terms that can be accessed at https://unidoc.io/eula/ + +package huffman ;import (_d "errors";_cf "fmt";_bf "github.com/unidoc/unipdf/v4/internal/bitwise";_c "github.com/unidoc/unipdf/v4/internal/jbig2/internal";_a "math";_f "strings";);func (_cfg *ValueNode )String ()string {return _cf .Sprintf ("\u0025\u0064\u002f%\u0064",_cfg ._ae ,_cfg ._afc ); +};func (_ef *OutOfBandNode )Decode (r *_bf .Reader )(int64 ,error ){return 0,_c .ErrOOB };func (_af *FixedSizeTable )InitTree (codeTable []*Code )error {_abg (codeTable );for _ ,_ebg :=range codeTable {_bb :=_af ._bd .append (_ebg );if _bb !=nil {return _bb ; +};};return nil ;};func (_db *EncodedTable )Decode (r *_bf .Reader )(int64 ,error ){return _db ._g .Decode (r )};type ValueNode struct{_ae int32 ;_afc int32 ;_cab bool ;};func NewCode (prefixLength ,rangeLength ,rangeLow int32 ,isLowerRange bool )*Code {return &Code {_gfde :prefixLength ,_fgge :rangeLength ,_cbb :rangeLow ,_agc :isLowerRange ,_dc :-1}; +};func _fa (_cgd int32 )*InternalNode {return &InternalNode {_cc :_cgd }};type EncodedTable struct{BasicTabler ;_g *InternalNode ;};func (_eee *FixedSizeTable )RootNode ()*InternalNode {return _eee ._bd };func (_gcc *InternalNode )String ()string {_ba :=&_f .Builder {}; +_ba .WriteString ("\u000a");_gcc .pad (_ba );_ba .WriteString ("\u0030\u003a\u0020");_ba .WriteString (_gcc ._df .String ()+"\u000a");_gcc .pad (_ba );_ba .WriteString ("\u0031\u003a\u0020");_ba .WriteString (_gcc ._gg .String ()+"\u000a");return _ba .String (); +};var _cgf =[][][]int32 {{{1,4,0},{2,8,16},{3,16,272},{3,32,65808}},{{1,0,0},{2,0,1},{3,0,2},{4,3,3},{5,6,11},{6,32,75},{6,-1,0}},{{8,8,-256},{1,0,0},{2,0,1},{3,0,2},{4,3,3},{5,6,11},{8,32,-257,999},{7,32,75},{6,-1,0}},{{1,0,1},{2,0,2},{3,0,3},{4,3,4},{5,6,12},{5,32,76}},{{7,8,-255},{1,0,1},{2,0,2},{3,0,3},{4,3,4},{5,6,12},{7,32,-256,999},{6,32,76}},{{5,10,-2048},{4,9,-1024},{4,8,-512},{4,7,-256},{5,6,-128},{5,5,-64},{4,5,-32},{2,7,0},{3,7,128},{3,8,256},{4,9,512},{4,10,1024},{6,32,-2049,999},{6,32,2048}},{{4,9,-1024},{3,8,-512},{4,7,-256},{5,6,-128},{5,5,-64},{4,5,-32},{4,5,0},{5,5,32},{5,6,64},{4,7,128},{3,8,256},{3,9,512},{3,10,1024},{5,32,-1025,999},{5,32,2048}},{{8,3,-15},{9,1,-7},{8,1,-5},{9,0,-3},{7,0,-2},{4,0,-1},{2,1,0},{5,0,2},{6,0,3},{3,4,4},{6,1,20},{4,4,22},{4,5,38},{5,6,70},{5,7,134},{6,7,262},{7,8,390},{6,10,646},{9,32,-16,999},{9,32,1670},{2,-1,0}},{{8,4,-31},{9,2,-15},{8,2,-11},{9,1,-7},{7,1,-5},{4,1,-3},{3,1,-1},{3,1,1},{5,1,3},{6,1,5},{3,5,7},{6,2,39},{4,5,43},{4,6,75},{5,7,139},{5,8,267},{6,8,523},{7,9,779},{6,11,1291},{9,32,-32,999},{9,32,3339},{2,-1,0}},{{7,4,-21},{8,0,-5},{7,0,-4},{5,0,-3},{2,2,-2},{5,0,2},{6,0,3},{7,0,4},{8,0,5},{2,6,6},{5,5,70},{6,5,102},{6,6,134},{6,7,198},{6,8,326},{6,9,582},{6,10,1094},{7,11,2118},{8,32,-22,999},{8,32,4166},{2,-1,0}},{{1,0,1},{2,1,2},{4,0,4},{4,1,5},{5,1,7},{5,2,9},{6,2,13},{7,2,17},{7,3,21},{7,4,29},{7,5,45},{7,6,77},{7,32,141}},{{1,0,1},{2,0,2},{3,1,3},{5,0,5},{5,1,6},{6,1,8},{7,0,10},{7,1,11},{7,2,13},{7,3,17},{7,4,25},{8,5,41},{8,32,73}},{{1,0,1},{3,0,2},{4,0,3},{5,0,4},{4,1,5},{3,3,7},{6,1,15},{6,2,17},{6,3,21},{6,4,29},{6,5,45},{7,6,77},{7,32,141}},{{3,0,-2},{3,0,-1},{1,0,0},{3,0,1},{3,0,2}},{{7,4,-24},{6,2,-8},{5,1,-4},{4,0,-2},{3,0,-1},{1,0,0},{3,0,1},{4,0,2},{5,1,3},{6,2,5},{7,4,9},{7,32,-25,999},{7,32,25}}}; +type Tabler interface{Decode (_bdg *_bf .Reader )(int64 ,error );InitTree (_cda []*Code )error ;String ()string ;RootNode ()*InternalNode ;};var _ Node =&OutOfBandNode {};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_ceb ){return nil ,_d .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065"); +};_ebgc :=_ceb [number -1];if _ebgc ==nil {var _baf error ;_ebgc ,_baf =_ea (_cgf [number -1]);if _baf !=nil {return nil ,_baf ;};_ceb [number -1]=_ebgc ;};return _ebgc ,nil ;};func _fcc (_bg ,_eea int32 )string {var _abc int32 ;_ggb :=make ([]rune ,_eea ); +for _ebd :=int32 (1);_ebd <=_eea ;_ebd ++{_abc =_bg >>uint (_eea -_ebd )&1;if _abc !=0{_ggb [_ebd -1]='1';}else {_ggb [_ebd -1]='0';};};return string (_ggb );};func (_e *EncodedTable )String ()string {return _e ._g .String ()+"\u000a"};func _edf (_bagf ,_efa int32 )int32 {if _bagf > _efa {return _bagf ; +};return _efa ;};func _abg (_fgd []*Code ){var _cgdf int32 ;for _ ,_cdd :=range _fgd {_cgdf =_edf (_cgdf ,_cdd ._gfde );};_cfa :=make ([]int32 ,_cgdf +1);for _ ,_bbc :=range _fgd {_cfa [_bbc ._gfde ]++;};var _acf int32 ;_gacd :=make ([]int32 ,len (_cfa )+1); +_cfa [0]=0;for _bac :=int32 (1);_bac <=int32 (len (_cfa ));_bac ++{_gacd [_bac ]=(_gacd [_bac -1]+(_cfa [_bac -1]))<<1;_acf =_gacd [_bac ];for _ ,_eeaa :=range _fgd {if _eeaa ._gfde ==_bac {_eeaa ._dc =_acf ;_acf ++;};};};};func (_ad *FixedSizeTable )Decode (r *_bf .Reader )(int64 ,error ){return _ad ._bd .Decode (r )}; +func _gfd (_gcbe *Code )*ValueNode {return &ValueNode {_ae :_gcbe ._fgge ,_afc :_gcbe ._cbb ,_cab :_gcbe ._agc };};func _ff (_ec *Code )*OutOfBandNode {return &OutOfBandNode {}};func (_ab *OutOfBandNode )String ()string {return _cf .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_a .MaxInt64 )); +};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_fgb :=&FixedSizeTable {_bd :&InternalNode {}};if _ee :=_fgb .InitTree (codeTable );_ee !=nil {return nil ,_ee ;};return _fgb ,nil ;};type FixedSizeTable struct{_bd *InternalNode }; +func (_gac *StandardTable )RootNode ()*InternalNode {return _gac ._gbe };type Node interface{Decode (_caa *_bf .Reader )(int64 ,error );String ()string ;};func (_ac *InternalNode )pad (_ebf *_f .Builder ){for _fc :=int32 (0);_fc < _ac ._cc ;_fc ++{_ebf .WriteString ("\u0020\u0020\u0020"); +};};type BasicTabler interface{HtHigh ()int32 ;HtLow ()int32 ;StreamReader ()*_bf .Reader ;HtPS ()int32 ;HtRS ()int32 ;HtOOB ()int32 ;};type StandardTable struct{_gbe *InternalNode };func _ea (_dfg [][]int32 )(*StandardTable ,error ){var _dbf []*Code ; +for _fd :=0;_fd < len (_dfg );_fd ++{_fab :=_dfg [_fd ][0];_fb :=_dfg [_fd ][1];_cb :=_dfg [_fd ][2];var _fdg bool ;if len (_dfg [_fd ])> 3{_fdg =true ;};_dbf =append (_dbf ,NewCode (_fab ,_fb ,_cb ,_fdg ));};_gbd :=&StandardTable {_gbe :_fa (0)};if _ggg :=_gbd .InitTree (_dbf ); +_ggg !=nil {return nil ,_ggg ;};return _gbd ,nil ;};type OutOfBandNode struct{};func (_be *InternalNode )Decode (r *_bf .Reader )(int64 ,error ){_cd ,_cgb :=r .ReadBit ();if _cgb !=nil {return 0,_cgb ;};if _cd ==0{return _be ._df .Decode (r );};return _be ._gg .Decode (r ); +};var _ Node =&InternalNode {};func (_egb *InternalNode )append (_dfc *Code )(_bag error ){if _dfc ._gfde ==0{return nil ;};_egde :=_dfc ._gfde -1-_egb ._cc ;if _egde < 0{return _d .New ("\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0073\u0068\u0069\u0066\u0074\u0069n\u0067 \u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u006c\u006c\u006f\u0077\u0065\u0064"); +};_gaf :=(_dfc ._dc >>uint (_egde ))&0x1;if _egde ==0{if _dfc ._fgge ==-1{if _gaf ==1{if _egb ._gg !=nil {return _cf .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_dfc ); +};_egb ._gg =_ff (_dfc );}else {if _egb ._df !=nil {return _cf .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_dfc );};_egb ._df =_ff (_dfc );};}else {if _gaf ==1{if _egb ._gg !=nil {return _cf .Errorf ("\u0076\u0061\u006cue\u0020\u004e\u006f\u0064\u0065\u0020\u0061\u006c\u0072e\u0061d\u0079 \u0073e\u0074\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u0064\u0065\u0020\u0025\u0073",_dfc ); +};_egb ._gg =_gfd (_dfc );}else {if _egb ._df !=nil {return _cf .Errorf ("\u0076\u0061\u006cue\u0020\u004e\u006f\u0064\u0065\u0020\u0061\u006c\u0072e\u0061d\u0079 \u0073e\u0074\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u0064\u0065\u0020\u0025\u0073",_dfc ); +};_egb ._df =_gfd (_dfc );};};}else {if _gaf ==1{if _egb ._gg ==nil {_egb ._gg =_fa (_egb ._cc +1);};if _bag =_egb ._gg .(*InternalNode ).append (_dfc );_bag !=nil {return _bag ;};}else {if _egb ._df ==nil {_egb ._df =_fa (_egb ._cc +1);};if _bag =_egb ._df .(*InternalNode ).append (_dfc ); +_bag !=nil {return _bag ;};};};return nil ;};func (_ggf *StandardTable )InitTree (codeTable []*Code )error {_abg (codeTable );for _ ,_gge :=range codeTable {if _ce :=_ggf ._gbe .append (_gge );_ce !=nil {return _ce ;};};return nil ;};func (_dda *StandardTable )String ()string {return _dda ._gbe .String ()+"\u000a"}; +func (_de *StandardTable )Decode (r *_bf .Reader )(int64 ,error ){return _de ._gbe .Decode (r )};var _ceb =make ([]Tabler ,len (_cgf ));func (_ca *EncodedTable )InitTree (codeTable []*Code )error {_abg (codeTable );for _ ,_gc :=range codeTable {if _fe :=_ca ._g .append (_gc ); +_fe !=nil {return _fe ;};};return nil ;};type Code struct{_gfde int32 ;_fgge int32 ;_cbb int32 ;_agc bool ;_dc int32 ;};func (_eg *FixedSizeTable )String ()string {return _eg ._bd .String ()+"\u000a"};func NewEncodedTable (table BasicTabler )(*EncodedTable ,error ){_fg :=&EncodedTable {_g :&InternalNode {},BasicTabler :table }; +if _cg :=_fg .parseTable ();_cg !=nil {return nil ,_cg ;};return _fg ,nil ;};func (_gf *EncodedTable )parseTable ()error {var (_ed []*Code ;_fgg ,_bc ,_gfc int32 ;_gb uint64 ;_edc error ;);_eb :=_gf .StreamReader ();_gcb :=_gf .HtLow ();for _gcb < _gf .HtHigh (){_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ())); +if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_gb ,_edc =_eb .ReadBits (byte (_gf .HtRS ()));if _edc !=nil {return _edc ;};_bc =int32 (_gb );_ed =append (_ed ,NewCode (_fgg ,_bc ,_gfc ,false ));_gcb +=1<<uint (_bc );};_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ())); +if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_bc =32;_gfc =_gf .HtLow ()-1;_ed =append (_ed ,NewCode (_fgg ,_bc ,_gfc ,true ));_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ()));if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_bc =32;_gfc =_gf .HtHigh (); +_ed =append (_ed ,NewCode (_fgg ,_bc ,_gfc ,false ));if _gf .HtOOB ()==1{_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ()));if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_ed =append (_ed ,NewCode (_fgg ,-1,-1,false ));};if _edc =_gf .InitTree (_ed );_edc !=nil {return _edc ; +};return nil ;};type InternalNode struct{_cc int32 ;_df Node ;_gg Node ;};func (_cga *EncodedTable )RootNode ()*InternalNode {return _cga ._g };func (_egd *ValueNode )Decode (r *_bf .Reader )(int64 ,error ){_ffa ,_bcc :=r .ReadBits (byte (_egd ._ae )); +if _bcc !=nil {return 0,_bcc ;};if _egd ._cab {_ffa =-_ffa ;};return int64 (_egd ._afc )+int64 (_ffa ),nil ;};var _ Tabler =&EncodedTable {};func (_agf *Code )String ()string {var _eeb string ;if _agf ._dc !=-1{_eeb =_fcc (_agf ._dc ,_agf ._gfde );}else {_eeb ="\u003f"; +};return _cf .Sprintf ("%\u0073\u002f\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_eeb ,_agf ._gfde ,_agf ._fgge ,_agf ._cbb );};var _ Node =&ValueNode {};
\ No newline at end of file diff --git a/unipdf/internal/jbig2/decoder/mmr/mmr.go b/unipdf/internal/jbig2/decoder/mmr/mmr.go new file mode 100644 index 0000000..7e003bf --- /dev/null +++ b/unipdf/internal/jbig2/decoder/mmr/mmr.go @@ -0,0 +1,50 @@ +// +// Copyright 2020 FoxyUtils ehf. All rights reserved. +// +// This is a commercial product and requires a license to operate. +// A trial license can be obtained at https://unidoc.io +// +// DO NOT EDIT: generated by unitwist Go source code obfuscator. +// +// Use of this source code is governed by the UniDoc End User License Agreement +// terms that can be accessed at https://unidoc.io/eula/ + +package mmr ;import (_df "errors";_g "fmt";_c "github.com/unidoc/unipdf/v4/common";_ad "github.com/unidoc/unipdf/v4/internal/bitwise";_de "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_a "io";);func New (r *_ad .Reader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ce :=&Decoder {_ge :width ,_ebc :height }; +_ec ,_fe :=r .NewPartialReader (int (dataOffset ),int (dataLength ),false );if _fe !=nil {return nil ,_fe ;};_fd ,_fe :=_gdd (_ec );if _fe !=nil {return nil ,_fe ;};_ ,_fe =r .Seek (_ec .RelativePosition (),_a .SeekCurrent );if _fe !=nil {return nil ,_fe ; +};_ce ._aga =_fd ;if _afb :=_ce .initTables ();_afb !=nil {return nil ,_afb ;};return _ce ,nil ;};var (_gca =[][3]int {{4,0x1,int (_db )},{3,0x1,int (_ed )},{1,0x1,int (_fa )},{3,0x3,int (_dec )},{6,0x3,int (_dd )},{7,0x3,int (_ddd )},{3,0x2,int (_eb )},{6,0x2,int (_ebf )},{7,0x2,int (_gc )},{10,0xf,int (_cf )},{12,0xf,int (_gbc )},{12,0x1,int (EOL )}}; +_agb =[][3]int {{4,0x07,2},{4,0x08,3},{4,0x0B,4},{4,0x0C,5},{4,0x0E,6},{4,0x0F,7},{5,0x12,128},{5,0x13,8},{5,0x14,9},{5,0x1B,64},{5,0x07,10},{5,0x08,11},{6,0x17,192},{6,0x18,1664},{6,0x2A,16},{6,0x2B,17},{6,0x03,13},{6,0x34,14},{6,0x35,15},{6,0x07,1},{6,0x08,12},{7,0x13,26},{7,0x17,21},{7,0x18,28},{7,0x24,27},{7,0x27,18},{7,0x28,24},{7,0x2B,25},{7,0x03,22},{7,0x37,256},{7,0x04,23},{7,0x08,20},{7,0xC,19},{8,0x12,33},{8,0x13,34},{8,0x14,35},{8,0x15,36},{8,0x16,37},{8,0x17,38},{8,0x1A,31},{8,0x1B,32},{8,0x02,29},{8,0x24,53},{8,0x25,54},{8,0x28,39},{8,0x29,40},{8,0x2A,41},{8,0x2B,42},{8,0x2C,43},{8,0x2D,44},{8,0x03,30},{8,0x32,61},{8,0x33,62},{8,0x34,63},{8,0x35,0},{8,0x36,320},{8,0x37,384},{8,0x04,45},{8,0x4A,59},{8,0x4B,60},{8,0x5,46},{8,0x52,49},{8,0x53,50},{8,0x54,51},{8,0x55,52},{8,0x58,55},{8,0x59,56},{8,0x5A,57},{8,0x5B,58},{8,0x64,448},{8,0x65,512},{8,0x67,640},{8,0x68,576},{8,0x0A,47},{8,0x0B,48},{9,0x01,_da },{9,0x98,1472},{9,0x99,1536},{9,0x9A,1600},{9,0x9B,1728},{9,0xCC,704},{9,0xCD,768},{9,0xD2,832},{9,0xD3,896},{9,0xD4,960},{9,0xD5,1024},{9,0xD6,1088},{9,0xD7,1152},{9,0xD8,1216},{9,0xD9,1280},{9,0xDA,1344},{9,0xDB,1408},{10,0x01,_da },{11,0x01,_da },{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560}}; +_fgb =[][3]int {{2,0x02,3},{2,0x03,2},{3,0x02,1},{3,0x03,4},{4,0x02,6},{4,0x03,5},{5,0x03,7},{6,0x04,9},{6,0x05,8},{7,0x04,10},{7,0x05,11},{7,0x07,12},{8,0x04,13},{8,0x07,14},{9,0x01,_da },{9,0x18,15},{10,0x01,_da },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_da },{11,0x17,24},{11,0x18,25},{11,0x28,23},{11,0x37,22},{11,0x67,19},{11,0x68,20},{11,0x6C,21},{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560},{12,0x24,52},{12,0x27,55},{12,0x28,56},{12,0x2B,59},{12,0x2C,60},{12,0x33,320},{12,0x34,384},{12,0x35,448},{12,0x37,53},{12,0x38,54},{12,0x52,50},{12,0x53,51},{12,0x54,44},{12,0x55,45},{12,0x56,46},{12,0x57,47},{12,0x58,57},{12,0x59,58},{12,0x5A,61},{12,0x5B,256},{12,0x64,48},{12,0x65,49},{12,0x66,62},{12,0x67,63},{12,0x68,30},{12,0x69,31},{12,0x6A,32},{12,0x6B,33},{12,0x6C,40},{12,0x6D,41},{12,0xC8,128},{12,0xC9,192},{12,0xCA,26},{12,0xCB,27},{12,0xCC,28},{12,0xCD,29},{12,0xD2,34},{12,0xD3,35},{12,0xD4,36},{12,0xD5,37},{12,0xD6,38},{12,0xD7,39},{12,0xDA,42},{12,0xDB,43},{13,0x4A,640},{13,0x4B,704},{13,0x4C,768},{13,0x4D,832},{13,0x52,1280},{13,0x53,1344},{13,0x54,1408},{13,0x55,1472},{13,0x5A,1536},{13,0x5B,1600},{13,0x64,1664},{13,0x65,1728},{13,0x6C,512},{13,0x6D,576},{13,0x72,896},{13,0x73,960},{13,0x74,1024},{13,0x75,1088},{13,0x76,1152},{13,0x77,1216}}; +);func (_gdf *runData )uncompressGetCode (_ddea []*code )(*code ,error ){return _gdf .uncompressGetCodeLittleEndian (_ddea );};func (_dde *Decoder )UncompressMMR ()(_eda *_de .Bitmap ,_cfb error ){_eda =_de .New (_dde ._ge ,_dde ._ebc );_ba :=make ([]int ,_eda .Width +5); +_fdc :=make ([]int ,_eda .Width +5);_fdc [0]=_eda .Width ;_fga :=1;var _fc int ;for _ggf :=0;_ggf < _eda .Height ;_ggf ++{_fc ,_cfb =_dde .uncompress2d (_dde ._aga ,_fdc ,_fga ,_ba ,_eda .Width );if _cfb !=nil {return nil ,_cfb ;};if _fc ==EOF {break ; +};if _fc > 0{_cfb =_dde .fillBitmap (_eda ,_ggf ,_ba ,_fc );if _cfb !=nil {return nil ,_cfb ;};};_fdc ,_ba =_ba ,_fdc ;_fga =_fc ;};if _cfb =_dde .detectAndSkipEOL ();_cfb !=nil {return nil ,_cfb ;};_dde ._aga .align ();return _eda ,nil ;};type runData struct{_febd *_ad .Reader ; +_gcc int ;_ggcc int ;_eed int ;_fbg []byte ;_cef int ;_bcg int ;};func (_dbg *Decoder )fillBitmap (_ga *_de .Bitmap ,_bd int ,_daf []int ,_effg int )error {var _bgc byte ;_baa :=0;_gf :=_ga .GetByteIndex (_baa ,_bd );for _bc :=0;_bc < _effg ;_bc ++{_ff :=byte (1); +_gd :=_daf [_bc ];if (_bc &1)==0{_ff =0;};for _baa < _gd {_bgc =(_bgc <<1)|_ff ;_baa ++;if (_baa &7)==0{if _gee :=_ga .SetByte (_gf ,_bgc );_gee !=nil {return _gee ;};_gf ++;_bgc =0;};};};if (_baa &7)!=0{_bgc <<=uint (8-(_baa &7));if _fbf :=_ga .SetByte (_gf ,_bgc ); +_fbf !=nil {return _fbf ;};};return nil ;};const (EOF =-3;_da =-2;EOL =-1;_ea =8;_be =(1<<_ea )-1;_cda =5;_fg =(1<<_cda )-1;);func (_bg *Decoder )createLittleEndianTable (_ded [][3]int )([]*code ,error ){_edd :=make ([]*code ,_be +1);for _ebcf :=0;_ebcf < len (_ded ); +_ebcf ++{_fcf :=_gb (_ded [_ebcf ]);if _fcf ._b <=_ea {_fb :=_ea -_fcf ._b ;_ef :=_fcf ._e <<uint (_fb );for _gbd :=(1<<uint (_fb ))-1;_gbd >=0;_gbd --{_abg :=_ef |_gbd ;_edd [_abg ]=_fcf ;};}else {_aea :=_fcf ._e >>uint (_fcf ._b -_ea );if _edd [_aea ]==nil {var _feb =_gb ([3]int {}); +_feb ._ag =make ([]*code ,_fg +1);_edd [_aea ]=_feb ;};if _fcf ._b <=_ea +_cda {_dad :=_ea +_cda -_fcf ._b ;_dee :=(_fcf ._e <<uint (_dad ))&_fg ;_edd [_aea ]._cd =true ;for _eff :=(1<<uint (_dad ))-1;_eff >=0;_eff --{_edd [_aea ]._ag [_dee |_eff ]=_fcf ; +};}else {return nil ,_df .New ("\u0043\u006f\u0064\u0065\u0020\u0074a\u0062\u006c\u0065\u0020\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077\u0020i\u006e\u0020\u004d\u004d\u0052\u0044\u0065c\u006f\u0064\u0065\u0072");};};};return _edd ,nil ;};type mmrCode int ; +type Decoder struct{_ge ,_ebc int ;_aga *runData ;_cdb []*code ;_cg []*code ;_af []*code ;};type code struct{_b int ;_e int ;_cb int ;_ag []*code ;_cd bool ;};func _adg (_dfe ,_f int )int {if _dfe < _f {return _f ;};return _dfe ;};func _gb (_ac [3]int )*code {return &code {_b :_ac [0],_e :_ac [1],_cb :_ac [2]}}; +const (_fab int =1024<<7;_cbc int =3;_eg uint =24;);func (_afc *Decoder )uncompress2d (_ffa *runData ,_gde []int ,_eae int ,_gge []int ,_fdg int )(int ,error ){var (_dfed int ;_ggaf int ;_gad int ;_feff =true ;_dca error ;_ebfc *code ;);_gde [_eae ]=_fdg ; +_gde [_eae +1]=_fdg ;_gde [_eae +2]=_fdg +1;_gde [_eae +3]=_fdg +1;_cgb :for _gad < _fdg {_ebfc ,_dca =_ffa .uncompressGetCode (_afc ._af );if _dca !=nil {return EOL ,nil ;};if _ebfc ==nil {_ffa ._gcc ++;break _cgb ;};_ffa ._gcc +=_ebfc ._b ;switch mmrCode (_ebfc ._cb ){case _fa :_gad =_gde [_dfed ]; +case _dec :_gad =_gde [_dfed ]+1;case _eb :_gad =_gde [_dfed ]-1;case _ed :for {var _ddb []*code ;if _feff {_ddb =_afc ._cdb ;}else {_ddb =_afc ._cg ;};_ebfc ,_dca =_ffa .uncompressGetCode (_ddb );if _dca !=nil {return 0,_dca ;};if _ebfc ==nil {break _cgb ; +};_ffa ._gcc +=_ebfc ._b ;if _ebfc ._cb < 64{if _ebfc ._cb < 0{_gge [_ggaf ]=_gad ;_ggaf ++;_ebfc =nil ;break _cgb ;};_gad +=_ebfc ._cb ;_gge [_ggaf ]=_gad ;_ggaf ++;break ;};_gad +=_ebfc ._cb ;};_ebb :=_gad ;_afa :for {var _aag []*code ;if !_feff {_aag =_afc ._cdb ; +}else {_aag =_afc ._cg ;};_ebfc ,_dca =_ffa .uncompressGetCode (_aag );if _dca !=nil {return 0,_dca ;};if _ebfc ==nil {break _cgb ;};_ffa ._gcc +=_ebfc ._b ;if _ebfc ._cb < 64{if _ebfc ._cb < 0{_gge [_ggaf ]=_gad ;_ggaf ++;break _cgb ;};_gad +=_ebfc ._cb ; +if _gad < _fdg ||_gad !=_ebb {_gge [_ggaf ]=_gad ;_ggaf ++;};break _afa ;};_gad +=_ebfc ._cb ;};for _gad < _fdg &&_gde [_dfed ]<=_gad {_dfed +=2;};continue _cgb ;case _db :_dfed ++;_gad =_gde [_dfed ];_dfed ++;continue _cgb ;case _dd :_gad =_gde [_dfed ]+2; +case _ebf :_gad =_gde [_dfed ]-2;case _ddd :_gad =_gde [_dfed ]+3;case _gc :_gad =_gde [_dfed ]-3;default:if _ffa ._gcc ==12&&_ebfc ._cb ==EOL {_ffa ._gcc =0;if _ ,_dca =_afc .uncompress1d (_ffa ,_gde ,_fdg );_dca !=nil {return 0,_dca ;};_ffa ._gcc ++; +if _ ,_dca =_afc .uncompress1d (_ffa ,_gge ,_fdg );_dca !=nil {return 0,_dca ;};_cc ,_ede :=_afc .uncompress1d (_ffa ,_gde ,_fdg );if _ede !=nil {return EOF ,_ede ;};_ffa ._gcc ++;return _cc ,nil ;};_gad =_fdg ;continue _cgb ;};if _gad <=_fdg {_feff =!_feff ; +_gge [_ggaf ]=_gad ;_ggaf ++;if _dfed > 0{_dfed --;}else {_dfed ++;};for _gad < _fdg &&_gde [_dfed ]<=_gad {_dfed +=2;};};};if _gge [_ggaf ]!=_fdg {_gge [_ggaf ]=_fdg ;};if _ebfc ==nil {return EOL ,nil ;};return _ggaf ,nil ;};func (_afbc *Decoder )initTables ()(_dfd error ){if _afbc ._cdb ==nil {_afbc ._cdb ,_dfd =_afbc .createLittleEndianTable (_agb ); +if _dfd !=nil {return ;};_afbc ._cg ,_dfd =_afbc .createLittleEndianTable (_fgb );if _dfd !=nil {return ;};_afbc ._af ,_dfd =_afbc .createLittleEndianTable (_gca );if _dfd !=nil {return ;};};return nil ;};const (_db mmrCode =iota ;_ed ;_fa ;_dec ;_dd ; +_ddd ;_eb ;_ebf ;_gc ;_cf ;_gbc ;);func (_gae *runData )fillBuffer (_dbgf int )error {_gae ._cef =_dbgf ;_ ,_dgb :=_gae ._febd .Seek (int64 (_dbgf ),_a .SeekStart );if _dgb !=nil {if _dgb ==_a .EOF {_c .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046"); +_gae ._bcg =-1;}else {return _dgb ;};};if _dgb ==nil {_gae ._bcg ,_dgb =_gae ._febd .Read (_gae ._fbg );if _dgb !=nil {if _dgb ==_a .EOF {_c .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_gae ._bcg =-1;}else {return _dgb ;};};};if _gae ._bcg > -1&&_gae ._bcg < 3{for _gae ._bcg < 3{_dda ,_cdf :=_gae ._febd .ReadByte (); +if _cdf !=nil {if _cdf ==_a .EOF {_gae ._fbg [_gae ._bcg ]=0;}else {return _cdf ;};}else {_gae ._fbg [_gae ._bcg ]=_dda &0xFF;};_gae ._bcg ++;};};_gae ._bcg -=3;if _gae ._bcg < 0{_gae ._fbg =make ([]byte ,len (_gae ._fbg ));_gae ._bcg =len (_gae ._fbg )-3; +};return nil ;};func (_dc *Decoder )detectAndSkipEOL ()error {for {_abgd ,_aa :=_dc ._aga .uncompressGetCode (_dc ._af );if _aa !=nil {return _aa ;};if _abgd !=nil &&_abgd ._cb ==EOL {_dc ._aga ._gcc +=_abgd ._b ;}else {return nil ;};};};func _ae (_ab ,_dg int )int {if _ab > _dg {return _dg ; +};return _ab ;};func (_cbb *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_dded :=_cbb ._gcc -_cbb ._ggcc ;if _dded < 0||_dded > 24{_afg :=(_cbb ._gcc >>3)-_cbb ._cef ;if _afg >=_cbb ._bcg {_afg +=_cbb ._cef ;if _ffeb :=_cbb .fillBuffer (_afg ); +_ffeb !=nil {return 0,_ffeb ;};_afg -=_cbb ._cef ;};_fafg :=(uint32 (_cbb ._fbg [_afg ]&0xFF)<<16)|(uint32 (_cbb ._fbg [_afg +1]&0xFF)<<8)|(uint32 (_cbb ._fbg [_afg +2]&0xFF));_gda :=uint32 (_cbb ._gcc &7);_fafg <<=_gda ;_cbb ._eed =int (_fafg );}else {_edb :=_cbb ._ggcc &7; +_bb :=7-_edb ;if _dded <=_bb {_cbb ._eed <<=uint (_dded );}else {_bca :=(_cbb ._ggcc >>3)+3-_cbb ._cef ;if _bca >=_cbb ._bcg {_bca +=_cbb ._cef ;if _eec :=_cbb .fillBuffer (_bca );_eec !=nil {return 0,_eec ;};_bca -=_cbb ._cef ;};_edb =8-_edb ;for {_cbb ._eed <<=uint (_edb ); +_cbb ._eed |=int (uint (_cbb ._fbg [_bca ])&0xFF);_dded -=_edb ;_bca ++;_edb =8;if !(_dded >=8){break ;};};_cbb ._eed <<=uint (_dded );};};_cbb ._ggcc =_cbb ._gcc ;return _cbb ._eed ,nil ;};func (_dag *Decoder )uncompress1d (_bcf *runData ,_abc []int ,_fgd int )(int ,error ){var (_ffe =true ; +_fef int ;_fbfd *code ;_bec int ;_ggc error ;);_edc :for _fef < _fgd {_gga :for {if _ffe {_fbfd ,_ggc =_bcf .uncompressGetCode (_dag ._cdb );if _ggc !=nil {return 0,_ggc ;};}else {_fbfd ,_ggc =_bcf .uncompressGetCode (_dag ._cg );if _ggc !=nil {return 0,_ggc ; +};};_bcf ._gcc +=_fbfd ._b ;if _fbfd ._cb < 0{break _edc ;};_fef +=_fbfd ._cb ;if _fbfd ._cb < 64{_ffe =!_ffe ;_abc [_bec ]=_fef ;_bec ++;break _gga ;};};};if _abc [_bec ]!=_fgd {_abc [_bec ]=_fgd ;};_fbe :=EOL ;if _fbfd !=nil &&_fbfd ._cb !=EOL {_fbe =_bec ; +};return _fbe ,nil ;};func _gdd (_fdd *_ad .Reader )(*runData ,error ){_ffc :=&runData {_febd :_fdd ,_gcc :0,_ggcc :1};_bge :=_ae (_adg (_cbc ,int (_fdd .Length ())),_fab );_ffc ._fbg =make ([]byte ,_bge );if _abcd :=_ffc .fillBuffer (0);_abcd !=nil {if _abcd ==_a .EOF {_ffc ._fbg =make ([]byte ,10); +_c .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_abcd );}else {return nil ,_abcd ;};};return _ffc ,nil ;};func (_gg *code )String ()string {return _g .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_gg ._b ,_gg ._e ,_gg ._cb ); +};func (_dff *runData )align (){_dff ._gcc =((_dff ._gcc +7)>>3)<<3};func (_ecf *runData )uncompressGetCodeLittleEndian (_edf []*code )(*code ,error ){_edeg ,_faf :=_ecf .uncompressGetNextCodeLittleEndian ();if _faf !=nil {_c .Log .Debug ("\u0055n\u0063\u006fm\u0070\u0072\u0065\u0073s\u0047\u0065\u0074N\u0065\u0078\u0074\u0043\u006f\u0064\u0065\u004c\u0069tt\u006c\u0065\u0045n\u0064\u0069a\u006e\u0020\u0066\u0061\u0069\u006ce\u0064\u003a \u0025\u0076",_faf ); +return nil ,_faf ;};_edeg &=0xffffff;_abe :=_edeg >>(_eg -_ea );_efc :=_edf [_abe ];if _efc !=nil &&_efc ._cd {_abe =(_edeg >>(_eg -_ea -_cda ))&_fg ;_efc =_efc ._ag [_abe ];};return _efc ,nil ;};
\ No newline at end of file |
