43 lines
11 KiB
Go
Raw Normal View History

2020-08-27 21:45:09 +00:00
//
// 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/
2021-06-21 14:01:56 +00:00
package huffman ;import (_gc "errors";_g "fmt";_aa "github.com/unidoc/unipdf/v3/internal/bitwise";_aab "github.com/unidoc/unipdf/v3/internal/jbig2/internal";_f "math";_d "strings";);type BasicTabler interface{HtHigh ()int32 ;HtLow ()int32 ;StreamReader ()_aa .StreamReader ;
HtPS ()int32 ;HtRS ()int32 ;HtOOB ()int32 ;};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_fce :=&FixedSizeTable {_eb :&InternalNode {}};if _fff :=_fce .InitTree (codeTable );_fff !=nil {return nil ,_fff ;};return _fce ,nil ;};func (_gg *EncodedTable )String ()string {return _gg ._gb .String ()+"\u000a"};
func _eba (_ecg ,_gba int32 )string {var _dgf int32 ;_gd :=make ([]rune ,_gba );for _cg :=int32 (1);_cg <=_gba ;_cg ++{_dgf =_ecg >>uint (_gba -_cg )&1;if _dgf !=0{_gd [_cg -1]='1';}else {_gd [_cg -1]='0';};};return string (_gd );};var _ Node =&OutOfBandNode {};
func (_dg *EncodedTable )parseTable ()error {var (_ac []*Code ;_bf ,_fe ,_ee int32 ;_ff uint64 ;_gcg error ;);_ga :=_dg .StreamReader ();_dc :=_dg .HtLow ();for _dc < _dg .HtHigh (){_ff ,_gcg =_ga .ReadBits (byte (_dg .HtPS ()));if _gcg !=nil {return _gcg ;
};_bf =int32 (_ff );_ff ,_gcg =_ga .ReadBits (byte (_dg .HtRS ()));if _gcg !=nil {return _gcg ;};_fe =int32 (_ff );_ac =append (_ac ,NewCode (_bf ,_fe ,_ee ,false ));_dc +=1<<uint (_fe );};_ff ,_gcg =_ga .ReadBits (byte (_dg .HtPS ()));if _gcg !=nil {return _gcg ;
};_bf =int32 (_ff );_fe =32;_ee =_dg .HtLow ()-1;_ac =append (_ac ,NewCode (_bf ,_fe ,_ee ,true ));_ff ,_gcg =_ga .ReadBits (byte (_dg .HtPS ()));if _gcg !=nil {return _gcg ;};_bf =int32 (_ff );_fe =32;_ee =_dg .HtHigh ();_ac =append (_ac ,NewCode (_bf ,_fe ,_ee ,false ));
if _dg .HtOOB ()==1{_ff ,_gcg =_ga .ReadBits (byte (_dg .HtPS ()));if _gcg !=nil {return _gcg ;};_bf =int32 (_ff );_ac =append (_ac ,NewCode (_bf ,-1,-1,false ));};if _gcg =_dg .InitTree (_ac );_gcg !=nil {return _gcg ;};return nil ;};func (_ce *InternalNode )String ()string {_dge :=&_d .Builder {};
_dge .WriteString ("\u000a");_ce .pad (_dge );_dge .WriteString ("\u0030\u003a\u0020");_dge .WriteString (_ce ._cd .String ()+"\u000a");_ce .pad (_dge );_dge .WriteString ("\u0031\u003a\u0020");_dge .WriteString (_ce ._bde .String ()+"\u000a");return _dge .String ();
};type OutOfBandNode struct{};func (_bfb *StandardTable )Decode (r _aa .StreamReader )(int64 ,error ){return _bfb ._dfg .Decode (r )};func (_fcf *FixedSizeTable )RootNode ()*InternalNode {return _fcf ._eb };func (_df *EncodedTable )Decode (r _aa .StreamReader )(int64 ,error ){return _df ._gb .Decode (r )};
func (_gcd *FixedSizeTable )InitTree (codeTable []*Code )error {_cfd (codeTable );for _ ,_gcgd :=range codeTable {_ed :=_gcd ._eb .append (_gcgd );if _ed !=nil {return _ed ;};};return nil ;};var _ Tabler =&EncodedTable {};var _ Node =&ValueNode {};func (_ca *StandardTable )RootNode ()*InternalNode {return _ca ._dfg };
func _fd (_gfc int32 )*InternalNode {return &InternalNode {_gag :_gfc }};func (_bfd *ValueNode )String ()string {return _g .Sprintf ("\u0025\u0064\u002f%\u0064",_bfd ._af ,_bfd ._cf );};type Tabler interface{Decode (_fee _aa .StreamReader )(int64 ,error );
InitTree (_efa []*Code )error ;String ()string ;RootNode ()*InternalNode ;};type StandardTable struct{_dfg *InternalNode };var _ede =[][][]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 Node interface{Decode (_bc _aa .StreamReader )(int64 ,error );String ()string ;};func (_gfd *InternalNode )pad (_bg *_d .Builder ){for _dfa :=int32 (0);_dfa < _gfd ._gag ;_dfa ++{_bg .WriteString ("\u0020\u0020\u0020");};};func _bdd (_edc *Code )*OutOfBandNode {return &OutOfBandNode {}};
func (_egd *FixedSizeTable )Decode (r _aa .StreamReader )(int64 ,error ){return _egd ._eb .Decode (r )};func (_aeb *Code )String ()string {var _fb string ;if _aeb ._da !=-1{_fb =_eba (_aeb ._da ,_aeb ._bbb );}else {_fb ="\u003f";};return _g .Sprintf ("%\u0073\u002f\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_fb ,_aeb ._bbb ,_aeb ._aee ,_aeb ._dfac );
};type ValueNode struct{_af int32 ;_cf int32 ;_cb bool ;};func (_ea *ValueNode )Decode (r _aa .StreamReader )(int64 ,error ){_ffd ,_edf :=r .ReadBits (byte (_ea ._af ));if _edf !=nil {return 0,_edf ;};if _ea ._cb {_ffd =-_ffd ;};return int64 (_ea ._cf )+int64 (_ffd ),nil ;
};type FixedSizeTable struct{_eb *InternalNode };func _dde (_ffc [][]int32 )(*StandardTable ,error ){var _gbd []*Code ;for _aaf :=0;_aaf < len (_ffc );_aaf ++{_eeg :=_ffc [_aaf ][0];_cbb :=_ffc [_aaf ][1];_ba :=_ffc [_aaf ][2];var _acc bool ;if len (_ffc [_aaf ])> 3{_acc =true ;
};_gbd =append (_gbd ,NewCode (_eeg ,_cbb ,_ba ,_acc ));};_dbb :=&StandardTable {_dfg :_fd (0)};if _eaf :=_dbb .InitTree (_gbd );_eaf !=nil {return nil ,_eaf ;};return _dbb ,nil ;};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_afg ){return nil ,_gc .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
};_bdb :=_afg [number -1];if _bdb ==nil {var _ebb error ;_bdb ,_ebb =_dde (_ede [number -1]);if _ebb !=nil {return nil ,_ebb ;};_afg [number -1]=_bdb ;};return _bdb ,nil ;};func _cfd (_fbb []*Code ){var _aae int32 ;for _ ,_fdf :=range _fbb {_aae =_efc (_aae ,_fdf ._bbb );
};_geg :=make ([]int32 ,_aae +1);for _ ,_cbd :=range _fbb {_geg [_cbd ._bbb ]++;};var _gab int32 ;_fbe :=make ([]int32 ,len (_geg )+1);_geg [0]=0;for _ddb :=int32 (1);_ddb <=int32 (len (_geg ));_ddb ++{_fbe [_ddb ]=(_fbe [_ddb -1]+(_geg [_ddb -1]))<<1;
_gab =_fbe [_ddb ];for _ ,_fg :=range _fbb {if _fg ._bbb ==_ddb {_fg ._da =_gab ;_gab ++;};};};};func (_gf *InternalNode )Decode (r _aa .StreamReader )(int64 ,error ){_eda ,_eee :=r .ReadBit ();if _eee !=nil {return 0,_eee ;};if _eda ==0{return _gf ._cd .Decode (r );
};return _gf ._bde .Decode (r );};func (_c *FixedSizeTable )String ()string {return _c ._eb .String ()+"\u000a"};func (_aef *StandardTable )InitTree (codeTable []*Code )error {_cfd (codeTable );for _ ,_bdee :=range codeTable {if _ec :=_aef ._dfg .append (_bdee );
_ec !=nil {return _ec ;};};return nil ;};var _afg =make ([]Tabler ,len (_ede ));func NewCode (prefixLength ,rangeLength ,rangeLow int32 ,isLowerRange bool )*Code {return &Code {_bbb :prefixLength ,_aee :rangeLength ,_dfac :rangeLow ,_afc :isLowerRange ,_da :-1};
};func (_bb *EncodedTable )RootNode ()*InternalNode {return _bb ._gb };func (_ge *OutOfBandNode )Decode (r _aa .StreamReader )(int64 ,error ){return 0,_aab .ErrOOB };type InternalNode struct{_gag int32 ;_cd Node ;_bde Node ;};type Code struct{_bbb int32 ;
_aee int32 ;_dfac int32 ;_afc bool ;_da int32 ;};func (_cc *OutOfBandNode )String ()string {return _g .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_f .MaxInt64 ));};func (_ef *StandardTable )String ()string {return _ef ._dfg .String ()+"\u000a"};type EncodedTable struct{BasicTabler ;
_gb *InternalNode ;};func NewEncodedTable (table BasicTabler )(*EncodedTable ,error ){_b :=&EncodedTable {_gb :&InternalNode {},BasicTabler :table };if _dd :=_b .parseTable ();_dd !=nil {return nil ,_dd ;};return _b ,nil ;};func (_edb *InternalNode )append (_db *Code )(_de error ){if _db ._bbb ==0{return nil ;
};_acb :=_db ._bbb -1-_edb ._gag ;if _acb < 0{return _gc .New ("\u004e\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");};_dcf :=(_db ._da >>uint (_acb ))&0x1;
if _acb ==0{if _db ._aee ==-1{if _dcf ==1{if _edb ._bde !=nil {return _g .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_db );};_edb ._bde =_bdd (_db );
}else {if _edb ._cd !=nil {return _g .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_db );};_edb ._cd =_bdd (_db );};}else {if _dcf ==1{if _edb ._bde !=nil {return _g .Errorf ("\u0056\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",_db );
};_edb ._bde =_edcg (_db );}else {if _edb ._cd !=nil {return _g .Errorf ("\u0056\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",_db );
};_edb ._cd =_edcg (_db );};};}else {if _dcf ==1{if _edb ._bde ==nil {_edb ._bde =_fd (_edb ._gag +1);};if _de =_edb ._bde .(*InternalNode ).append (_db );_de !=nil {return _de ;};}else {if _edb ._cd ==nil {_edb ._cd =_fd (_edb ._gag +1);};if _de =_edb ._cd .(*InternalNode ).append (_db );
_de !=nil {return _de ;};};};return nil ;};func _edcg (_eea *Code )*ValueNode {return &ValueNode {_af :_eea ._aee ,_cf :_eea ._dfac ,_cb :_eea ._afc }};func _efc (_fca ,_dea int32 )int32 {if _fca > _dea {return _fca ;};return _dea ;};func (_ae *EncodedTable )InitTree (codeTable []*Code )error {_cfd (codeTable );
for _ ,_eg :=range codeTable {if _ag :=_ae ._gb .append (_eg );_ag !=nil {return _ag ;};};return nil ;};var _ Node =&InternalNode {};