2023-04-06 19:57:40 +00:00

135 lines
39 KiB
Go

//
// 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 document ;import (_e "encoding/binary";_ef "fmt";_a "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/internal/bitwise";_fb "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_ab "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_fg "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_fd "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_b "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ca "io";_ee "math";_c "runtime/debug";);func (_cbee *Page )getHeight ()(int ,error ){const _ffae ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";
if _cbee .FinalHeight !=0{return _cbee .FinalHeight ,nil ;};_ebeb :=_cbee .getPageInformationSegment ();if _ebeb ==nil {return 0,_b .Error (_ffae ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cabd ,_gbfb :=_ebeb .GetSegmentData ();
if _gbfb !=nil {return 0,_b .Wrap (_gbfb ,_ffae ,"");};_fbac ,_efe :=_cabd .(*_fg .PageInformationSegment );if !_efe {return 0,_b .Errorf (_ffae ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_cabd );
};if _fbac .PageBMHeight ==_ee .MaxInt32 {_ ,_gbfb =_cbee .GetBitmap ();if _gbfb !=nil {return 0,_b .Wrap (_gbfb ,_ffae ,"");};}else {_cbee .FinalHeight =_fbac .PageBMHeight ;};return _cbee .FinalHeight ,nil ;};func (_cg *Document )AddGenericPage (bm *_ab .Bitmap ,duplicateLineRemoval bool )(_ag error ){const _gb ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
if !_cg .FullHeaders &&_cg .NumberOfPages !=0{return _b .Error (_gb ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};_cea :=&Page {Segments :[]*_fg .Header {},Bitmap :bm ,Document :_cg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ab .Chocolate };_cea .PageNumber =int (_cg .nextPageNumber ());_cg .Pages [_cea .PageNumber ]=_cea ;
bm .InverseData ();_cea .AddPageInformationSegment ();if _ag =_cea .AddGenericRegion (bm ,0,0,0,_fg .TImmediateGenericRegion ,duplicateLineRemoval );_ag !=nil {return _b .Wrap (_ag ,_gb ,"");};if _cg .FullHeaders {_cea .AddEndOfPageSegment ();};return nil ;
};func (_gbg *Document )nextPageNumber ()uint32 {_gbg .NumberOfPages ++;return _gbg .NumberOfPages };func (_gedg *Page )GetWidth ()(int ,error ){return _gedg .getWidth ()};func (_fgd *Document )completeClassifiedPages ()(_gbd error ){const _fbd ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
if _fgd .Classer ==nil {return nil ;};_fgd ._g =make ([]int ,_fgd .Classer .UndilatedTemplates .Size ());for _dc :=0;_dc < _fgd .Classer .ClassIDs .Size ();_dc ++{_dg ,_be :=_fgd .Classer .ClassIDs .Get (_dc );if _be !=nil {return _b .Wrapf (_be ,_fbd ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dc );
};_fgd ._g [_dg ]++;};var _ad []int ;for _gd :=0;_gd < _fgd .Classer .UndilatedTemplates .Size ();_gd ++{if _fgd .NumberOfPages ==1||_fgd ._g [_gd ]> 1{_ad =append (_ad ,_gd );};};var (_bdg *Page ;_gc bool ;);for _dcd ,_gf :=range *_fgd .Classer .ComponentPageNumbers {if _bdg ,_gc =_fgd .Pages [_gf ];
!_gc {return _b .Errorf (_fbd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dcd );};if _bdg .EncodingMethod ==GenericEM {_a .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_dcd );
continue ;};_fgd ._fe [_gf ]=append (_fgd ._fe [_gf ],_dcd );_gee ,_df :=_fgd .Classer .ClassIDs .Get (_dcd );if _df !=nil {return _b .Wrapf (_df ,_fbd ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_dcd );
};if _fgd ._g [_gee ]==1&&_fgd .NumberOfPages !=1{_ged :=append (_fgd ._cb [_gf ],_gee );_fgd ._cb [_gf ]=_ged ;};};if _gbd =_fgd .Classer .ComputeLLCorners ();_gbd !=nil {return _b .Wrap (_gbd ,_fbd ,"");};if _ ,_gbd =_fgd .addSymbolDictionary (0,_fgd .Classer .UndilatedTemplates ,_ad ,_fgd ._eed ,false );
_gbd !=nil {return _b .Wrap (_gbd ,_fbd ,"");};return nil ;};func (_bff *Page )nextSegmentNumber ()uint32 {return _bff .Document .nextSegmentNumber ()};func (_cgg *Document )mapData ()error {const _egg ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_gad []*_fg .Header ;
_daa int64 ;_faf _fg .Type ;);_dbd ,_abd :=_cgg .isFileHeaderPresent ();if _abd !=nil {return _b .Wrap (_abd ,_egg ,"");};if _dbd {if _abd =_cgg .parseFileHeader ();_abd !=nil {return _b .Wrap (_abd ,_egg ,"");};_daa +=int64 (_cgg ._ce );_cgg .FullHeaders =true ;
};var (_age *Page ;_bcb bool ;);for _faf !=51&&!_bcb {_ff ,_edea :=_fg .NewHeader (_cgg ,_cgg .InputStream ,_daa ,_cgg .OrganizationType );if _edea !=nil {return _b .Wrap (_edea ,_egg ,"");};_a .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_ff .SegmentNumber ,_ff .Type );
_faf =_ff .Type ;if _faf !=_fg .TEndOfFile {if _ff .PageAssociation !=0{_age =_cgg .Pages [_ff .PageAssociation ];if _age ==nil {_age =_fcg (_cgg ,_ff .PageAssociation );_cgg .Pages [_ff .PageAssociation ]=_age ;if _cgg .NumberOfPagesUnknown {_cgg .NumberOfPages ++;
};};_age .Segments =append (_age .Segments ,_ff );}else {_cgg .GlobalSegments .AddSegment (_ff );};};_gad =append (_gad ,_ff );_daa =_cgg .InputStream .AbsolutePosition ();if _cgg .OrganizationType ==_fg .OSequential {_daa +=int64 (_ff .SegmentDataLength );
};_bcb ,_edea =_cgg .reachedEOF (_daa );if _edea !=nil {_a .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_edea );
return _b .Wrap (_edea ,_egg ,"");};};_cgg .determineRandomDataOffsets (_gad ,uint64 (_daa ));return nil ;};func (_ecg *Globals )AddSegment (segment *_fg .Header ){_ecg .Segments =append (_ecg .Segments ,segment )};func (_fa *Document )encodeEOFHeader (_gcde _d .BinaryWriter )(_cbg int ,_efa error ){_egce :=&_fg .Header {SegmentNumber :_fa .nextSegmentNumber (),Type :_fg .TEndOfFile };
if _cbg ,_efa =_egce .Encode (_gcde );_efa !=nil {return 0,_b .Wrap (_efa ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _cbg ,nil ;};func _bab (_da int )int {_dbf :=0;_aga :=(_da &(_da -1))==0;_da >>=1;
for ;_da !=0;_da >>=1{_dbf ++;};if _aga {return _dbf ;};return _dbf +1;};func (_cef *Globals )GetSegmentByIndex (index int )(*_fg .Header ,error ){const _afd ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
if _cef ==nil {return nil ,_b .Error (_afd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cef .Segments )==0{return nil ,_b .Error (_afd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};if index > len (_cef .Segments )-1{return nil ,_b .Error (_afd ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _cef .Segments [index ],nil ;};func (_ec *Document )addSymbolDictionary (_fgb int ,_eea *_ab .Bitmaps ,_gcd []int ,_efc map[int ]int ,_gbb bool )(*_fg .Header ,error ){const _cbc ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_ceag :=&_fg .SymbolDictionary {};if _cc :=_ceag .InitEncode (_eea ,_gcd ,_efc ,_gbb );_cc !=nil {return nil ,_cc ;};_bgc :=&_fg .Header {Type :_fg .TSymbolDictionary ,PageAssociation :_fgb ,SegmentData :_ceag };if _fgb ==0{if _ec .GlobalSegments ==nil {_ec .GlobalSegments =&Globals {};
};_ec .GlobalSegments .AddSegment (_bgc );return _bgc ,nil ;};_agb ,_eb :=_ec .Pages [_fgb ];if !_eb {return nil ,_b .Errorf (_cbc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fgb );};var (_gfc int ;
_add *_fg .Header ;);for _gfc ,_add =range _agb .Segments {if _add .Type ==_fg .TPageInformation {break ;};};_gfc ++;_agb .Segments =append (_agb .Segments ,nil );copy (_agb .Segments [_gfc +1:],_agb .Segments [_gfc :]);_agb .Segments [_gfc ]=_bgc ;return _bgc ,nil ;
};func (_gdd *Document )GetPage (pageNumber int )(_fg .Pager ,error ){const _bcd ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_a .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_c .Stack ());
return nil ,_b .Errorf (_bcd ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );
};if pageNumber > len (_gdd .Pages ){_a .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_b .Error (_bcd ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};_bcf ,_ede :=_gdd .Pages [pageNumber ];if !_ede {_a .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_b .Errorf (_bcd ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _bcf ,nil ;};func (_feb *Document )isFileHeaderPresent ()(bool ,error ){_feb .InputStream .Mark ();for _ ,_gda :=range _fc {_bcad ,_gab :=_feb .InputStream .ReadByte ();if _gab !=nil {return false ,_gab ;};if _gda !=_bcad {_feb .InputStream .Reset ();
return false ,nil ;};};_feb .InputStream .Reset ();return true ,nil ;};func (_edb *Document )parseFileHeader ()error {const _fda ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_baa :=_edb .InputStream .Seek (8,_ca .SeekStart );
if _baa !=nil {return _b .Wrap (_baa ,_fda ,"\u0069\u0064");};_ ,_baa =_edb .InputStream .ReadBits (5);if _baa !=nil {return _b .Wrap (_baa ,_fda ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_bga ,_baa :=_edb .InputStream .ReadBit ();
if _baa !=nil {return _b .Wrap (_baa ,_fda ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _bga ==1{_edb .GBUseExtTemplate =true ;};_bga ,_baa =_edb .InputStream .ReadBit ();if _baa !=nil {return _b .Wrap (_baa ,_fda ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
};if _bga !=1{_edb .NumberOfPagesUnknown =false ;};_bga ,_baa =_edb .InputStream .ReadBit ();if _baa !=nil {return _b .Wrap (_baa ,_fda ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_edb .OrganizationType =_fg .OrganizationType (_bga );
if !_edb .NumberOfPagesUnknown {_edb .NumberOfPages ,_baa =_edb .InputStream .ReadUint32 ();if _baa !=nil {return _b .Wrap (_baa ,_fda ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_edb ._ce =13;};return nil ;};
func (_gg *Document )produceClassifiedPage (_bef *Page ,_caf *_fg .Header )(_fcd error ){const _efd ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _eg map[int ]int ;_bg :=_gg ._de ;_edf :=[]*_fg .Header {_caf };
if len (_gg ._cb [_bef .PageNumber ])> 0{_eg =map[int ]int {};_acb ,_gdc :=_gg .addSymbolDictionary (_bef .PageNumber ,_gg .Classer .UndilatedTemplates ,_gg ._cb [_bef .PageNumber ],_eg ,false );if _gdc !=nil {return _b .Wrap (_gdc ,_efd ,"");};_edf =append (_edf ,_acb );
_bg +=len (_gg ._cb [_bef .PageNumber ]);};_ga :=_gg ._fe [_bef .PageNumber ];_a .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bef .PageNumber ,_ga );_bef .addTextRegionSegment (_edf ,_gg ._eed ,_eg ,_gg ._fe [_bef .PageNumber ],_gg .Classer .PtaLL ,_gg .Classer .UndilatedTemplates ,_gg .Classer .ClassIDs ,nil ,_bab (_bg ),len (_gg ._fe [_bef .PageNumber ]));
return nil ;};type Globals struct{Segments []*_fg .Header ;};func (_bfgac *Page )countRegions ()int {var _baeg int ;for _ ,_gddd :=range _bfgac .Segments {switch _gddd .Type {case 6,7,22,23,38,39,42,43:_baeg ++;};};return _baeg ;};func (_cab *Document )produceClassifiedPages ()(_efg error ){const _ac ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
if _cab .Classer ==nil {return nil ;};var (_ba *Page ;_bdc bool ;_cbb *_fg .Header ;);for _gce :=1;_gce <=int (_cab .NumberOfPages );_gce ++{if _ba ,_bdc =_cab .Pages [_gce ];!_bdc {return _b .Errorf (_ac ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gce );
};if _ba .EncodingMethod ==GenericEM {continue ;};if _cbb ==nil {if _cbb ,_efg =_cab .GlobalSegments .GetSymbolDictionary ();_efg !=nil {return _b .Wrap (_efg ,_ac ,"");};};if _efg =_cab .produceClassifiedPage (_ba ,_cbb );_efg !=nil {return _b .Wrapf (_efg ,_ac ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_gce );
};};return nil ;};func (_agf *Document )GetNumberOfPages ()(uint32 ,error ){if _agf .NumberOfPagesUnknown ||_agf .NumberOfPages ==0{if len (_agf .Pages )==0{if _afcg :=_agf .mapData ();_afcg !=nil {return 0,_b .Wrap (_afcg ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");
};};return uint32 (len (_agf .Pages )),nil ;};return _agf .NumberOfPages ,nil ;};func (_bdgg *Page )Encode (w _d .BinaryWriter )(_daf int ,_gff error ){const _bfg ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _ecce int ;for _ ,_gadc :=range _bdgg .Segments {if _ecce ,_gff =_gadc .Encode (w );
_gff !=nil {return _daf ,_b .Wrap (_gff ,_bfg ,"");};_daf +=_ecce ;};return _daf ,nil ;};func (_cbgg *Page )collectPageStripes ()(_dgf []_fg .Segmenter ,_bfc error ){const _dcg ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
var _acbd _fg .Segmenter ;for _ ,_fgg :=range _cbgg .Segments {switch _fgg .Type {case 6,7,22,23,38,39,42,43:_acbd ,_bfc =_fgg .GetSegmentData ();if _bfc !=nil {return nil ,_b .Wrap (_bfc ,_dcg ,"");};_dgf =append (_dgf ,_acbd );case 50:_acbd ,_bfc =_fgg .GetSegmentData ();
if _bfc !=nil {return nil ,_bfc ;};_bag ,_gaec :=_acbd .(*_fg .EndOfStripe );if !_gaec {return nil ,_b .Errorf (_dcg ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_acbd );
};_dgf =append (_dgf ,_bag );_cbgg .FinalHeight =_bag .LineNumber ();};};return _dgf ,nil ;};func (_agd *Page )GetResolutionY ()(int ,error ){return _agd .getResolutionY ()};func (_bgb *Page )GetHeight ()(int ,error ){return _bgb .getHeight ()};func (_gdg *Document )nextSegmentNumber ()uint32 {_gef :=_gdg .CurrentSegmentNumber ;
_gdg .CurrentSegmentNumber ++;return _gef ;};func (_bgd *Page )GetResolutionX ()(int ,error ){return _bgd .getResolutionX ()};var _fc =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_abb *Document )encodeSegment (_gbdc *_fg .Header ,_dgd *int )error {const _bca ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
_gbdc .SegmentNumber =_abb .nextSegmentNumber ();_bf ,_egc :=_gbdc .Encode (_abb ._ed );if _egc !=nil {return _b .Wrapf (_egc ,_bca ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_gbdc .SegmentNumber );};*_dgd +=_bf ;
return nil ;};func (_cfa *Page )composePageBitmap ()error {const _cfaf ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _cfa .PageNumber ==0{return nil ;};_cdc :=_cfa .getPageInformationSegment ();
if _cdc ==nil {return _b .Error (_cfaf ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_fdf ,_dac :=_cdc .GetSegmentData ();
if _dac !=nil {return _dac ;};_ffd ,_gdb :=_fdf .(*_fg .PageInformationSegment );if !_gdb {return _b .Error (_cfaf ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");
};if _dac =_cfa .createPage (_ffd );_dac !=nil {return _b .Wrap (_dac ,_cfaf ,"");};_cfa .clearSegmentData ();return nil ;};func (_dggd *Page )getPageInformationSegment ()*_fg .Header {for _ ,_bfcf :=range _dggd .Segments {if _bfcf .Type ==_fg .TPageInformation {return _bfcf ;
};};_a .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_dggd );
return nil ;};func (_ffa *Page )AddEndOfPageSegment (){_gbe :=&_fg .Header {Type :_fg .TEndOfPage ,PageAssociation :_ffa .PageNumber };_ffa .Segments =append (_ffa .Segments ,_gbe );};func (_cfb *Page )createStripedPage (_bbf *_fg .PageInformationSegment )error {const _ebe ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
_gbgd ,_acde :=_cfb .collectPageStripes ();if _acde !=nil {return _b .Wrap (_acde ,_ebe ,"");};var _gbdb int ;for _ ,_ebdb :=range _gbgd {if _dea ,_gcef :=_ebdb .(*_fg .EndOfStripe );_gcef {_gbdb =_dea .LineNumber ()+1;}else {_gged :=_ebdb .(_fg .Regioner );
_gcga :=_gged .GetRegionInfo ();_gefc :=_cfb .getCombinationOperator (_bbf ,_gcga .CombinaionOperator );_aaca ,_bfd :=_gged .GetRegionBitmap ();if _bfd !=nil {return _b .Wrap (_bfd ,_ebe ,"");};_bfd =_ab .Blit (_aaca ,_cfb .Bitmap ,int (_gcga .XLocation ),_gbdb ,_gefc );
if _bfd !=nil {return _b .Wrap (_bfd ,_ebe ,"");};};};return nil ;};func (_cdf *Document )reachedEOF (_geba int64 )(bool ,error ){const _cbe ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_ggg :=_cdf .InputStream .Seek (_geba ,_ca .SeekStart );
if _ggg !=nil {_a .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_ggg );
return false ,_b .Wrap (_ggg ,_cbe ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_ggg =_cdf .InputStream .ReadBits (32);if _ggg ==_ca .EOF {return true ,nil ;
}else if _ggg !=nil {return false ,_b .Wrap (_ggg ,_cbe ,"");};return false ,nil ;};func _cbag (_cfc *_d .Reader ,_bbe *Globals )(*Document ,error ){_bfbf :=&Document {Pages :make (map[int ]*Page ),InputStream :_cfc ,OrganizationType :_fg .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_bbe ,_ce :9};
if _bfbf .GlobalSegments ==nil {_bfbf .GlobalSegments =&Globals {};};if _ecc :=_bfbf .mapData ();_ecc !=nil {return nil ,_ecc ;};return _bfbf ,nil ;};func (_cba *Document )determineRandomDataOffsets (_ebb []*_fg .Header ,_ea uint64 ){if _cba .OrganizationType !=_fg .ORandom {return ;
};for _ ,_efgg :=range _ebb {_efgg .SegmentDataStartOffset =_ea ;_ea +=_efgg .SegmentDataLength ;};};func (_egb *Globals )GetSegment (segmentNumber int )(*_fg .Header ,error ){const _bec ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
if _egb ==nil {return nil ,_b .Error (_bec ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_egb .Segments )==0{return nil ,_b .Error (_bec ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};var _ccf *_fg .Header ;for _ ,_ccf =range _egb .Segments {if _ccf .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _ccf ==nil {return nil ,_b .Error (_bec ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _ccf ,nil ;};func (_agg *Page )getCombinationOperator (_cecf *_fg .PageInformationSegment ,_fec _ab .CombinationOperator )_ab .CombinationOperator {if _cecf .CombinationOperatorOverrideAllowed (){return _fec ;};return _cecf .CombinationOperator ();
};type Page struct{Segments []*_fg .Header ;PageNumber int ;Bitmap *_ab .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;
};func (_db *Document )AddClassifiedPage (bm *_ab .Bitmap ,method _fd .Method )(_dd error ){const _cec ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";
if !_db .FullHeaders &&_db .NumberOfPages !=0{return _b .Error (_cec ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};if _db .Classer ==nil {if _db .Classer ,_dd =_fd .Init (_fd .DefaultSettings ());_dd !=nil {return _b .Wrap (_dd ,_cec ,"");};};_bd :=int (_db .nextPageNumber ());_ge :=&Page {Segments :[]*_fg .Header {},Bitmap :bm ,Document :_db ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_bd };
_db .Pages [_bd ]=_ge ;switch method {case _fd .RankHaus :_ge .EncodingMethod =RankHausEM ;case _fd .Correlation :_ge .EncodingMethod =CorrelationEM ;};_ge .AddPageInformationSegment ();if _dd =_db .Classer .AddPage (bm ,_bd ,method );_dd !=nil {return _b .Wrap (_dd ,_cec ,"");
};if _db .FullHeaders {_ge .AddEndOfPageSegment ();};return nil ;};func (_fea *Page )clearSegmentData (){for _ffg :=range _fea .Segments {_fea .Segments [_ffg ].CleanSegmentData ();};};func (_af *Document )completeSymbols ()(_gde error ){const _agc ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
if _af .Classer ==nil {return nil ;};if _af .Classer .UndilatedTemplates ==nil {return _b .Error (_agc ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");
};_cafc :=len (_af .Pages )==1;_gbbd :=make ([]int ,_af .Classer .UndilatedTemplates .Size ());var _dgg int ;for _fga :=0;_fga < _af .Classer .ClassIDs .Size ();_fga ++{_dgg ,_gde =_af .Classer .ClassIDs .Get (_fga );if _gde !=nil {return _b .Wrap (_gde ,_agc ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_gbbd [_dgg ]++;};var _beb []int ;for _bac :=0;_bac < _af .Classer .UndilatedTemplates .Size ();_bac ++{if _gbbd [_bac ]==0{return _b .Error (_agc ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");
};if _gbbd [_bac ]> 1||_cafc {_beb =append (_beb ,_bac );};};_af ._de =len (_beb );var _dfa ,_fba int ;for _aa :=0;_aa < _af .Classer .ComponentPageNumbers .Size ();_aa ++{_dfa ,_gde =_af .Classer .ComponentPageNumbers .Get (_aa );if _gde !=nil {return _b .Wrapf (_gde ,_agc ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_aa );
};_fba ,_gde =_af .Classer .ClassIDs .Get (_aa );if _gde !=nil {return _b .Wrapf (_gde ,_agc ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_dfa );
};if _gbbd [_fba ]==1&&!_cafc {_af ._cb [_dfa ]=append (_af ._cb [_dfa ],_fba );};};if _gde =_af .Classer .ComputeLLCorners ();_gde !=nil {return _b .Wrap (_gde ,_agc ,"");};return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;
NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_d .Reader ;GlobalSegments *Globals ;OrganizationType _fg .OrganizationType ;Classer *_fd .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_ab .Bitmaps ;
BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ce uint8 ;_ed *_d .BufferedWriter ;EncodeGlobals bool ;_de int ;_cb map[int ][]int ;_fe map[int ][]int ;_g []int ;_eed map[int ]int ;};func (_ege *Page )getResolutionY ()(int ,error ){const _bgcb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
if _ege .ResolutionY !=0{return _ege .ResolutionY ,nil ;};_bad :=_ege .getPageInformationSegment ();if _bad ==nil {return 0,_b .Error (_bgcb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bfa ,_dgdd :=_bad .GetSegmentData ();
if _dgdd !=nil {return 0,_b .Wrap (_dgdd ,_bgcb ,"");};_aacc ,_gefca :=_bfa .(*_fg .PageInformationSegment );if !_gefca {return 0,_b .Errorf (_bgcb ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_bfa );
};_ege .ResolutionY =_aacc .ResolutionY ;return _ege .ResolutionY ,nil ;};func (_afa *Page )GetSegment (number int )(*_fg .Header ,error ){const _ccg ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_ggf :=range _afa .Segments {if _ggf .SegmentNumber ==uint32 (number ){return _ggf ,nil ;
};};_afg :=make ([]uint32 ,len (_afa .Segments ));for _ebba ,_deg :=range _afa .Segments {_afg [_ebba ]=_deg .SegmentNumber ;};return nil ,_b .Errorf (_ccg ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_afa .PageNumber ,_afg );
};func (_ccc *Document )Encode ()(_bda []byte ,_afc error ){const _gfa ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _cd ,_dec int ;if _ccc .FullHeaders {if _cd ,_afc =_ccc .encodeFileHeader (_ccc ._ed );_afc !=nil {return nil ,_b .Wrap (_afc ,_gfa ,"");
};};var (_aag bool ;_bc *_fg .Header ;_ebd *Page ;);if _afc =_ccc .completeClassifiedPages ();_afc !=nil {return nil ,_b .Wrap (_afc ,_gfa ,"");};if _afc =_ccc .produceClassifiedPages ();_afc !=nil {return nil ,_b .Wrap (_afc ,_gfa ,"");};if _ccc .GlobalSegments !=nil {for _ ,_bc =range _ccc .GlobalSegments .Segments {if _afc =_ccc .encodeSegment (_bc ,&_cd );
_afc !=nil {return nil ,_b .Wrap (_afc ,_gfa ,"");};};};for _ceb :=1;_ceb <=int (_ccc .NumberOfPages );_ceb ++{if _ebd ,_aag =_ccc .Pages [_ceb ];!_aag {return nil ,_b .Errorf (_gfa ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ceb );
};for _ ,_bc =range _ebd .Segments {if _afc =_ccc .encodeSegment (_bc ,&_cd );_afc !=nil {return nil ,_b .Wrap (_afc ,_gfa ,"");};};};if _ccc .FullHeaders {if _dec ,_afc =_ccc .encodeEOFHeader (_ccc ._ed );_afc !=nil {return nil ,_b .Wrap (_afc ,_gfa ,"");
};_cd +=_dec ;};_bda =_ccc ._ed .Data ();if len (_bda )!=_cd {_a .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_cd ,len (_bda ));
};return _bda ,nil ;};func (_edg *Page )AddPageInformationSegment (){_acbc :=&_fg .PageInformationSegment {PageBMWidth :_edg .FinalWidth ,PageBMHeight :_edg .FinalHeight ,ResolutionX :_edg .ResolutionX ,ResolutionY :_edg .ResolutionY ,IsLossless :_edg .IsLossless };
if _edg .BlackIsOne {_acbc .DefaultPixelValue =uint8 (0x1);};_fee :=&_fg .Header {PageAssociation :_edg .PageNumber ,SegmentDataLength :uint64 (_acbc .Size ()),SegmentData :_acbc ,Type :_fg .TPageInformation };_edg .Segments =append (_edg .Segments ,_fee );
};func (_eede *Page )String ()string {return _ef .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_eede .PageNumber );};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ed :_d .BufferedMSB (),Pages :map[int ]*Page {},_cb :map[int ][]int {},_eed :map[int ]int {},_fe :map[int ][]int {}};
};func (_afe *Page )getWidth ()(int ,error ){const _gcf ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _afe .FinalWidth !=0{return _afe .FinalWidth ,nil ;};_geea :=_afe .getPageInformationSegment ();if _geea ==nil {return 0,_b .Error (_gcf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_bfgc ,_gcad :=_geea .GetSegmentData ();if _gcad !=nil {return 0,_b .Wrap (_gcad ,_gcf ,"");};_dad ,_fgc :=_bfgc .(*_fg .PageInformationSegment );if !_fgc {return 0,_b .Errorf (_gcf ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bfgc );
};_afe .FinalWidth =_dad .PageBMWidth ;return _afe .FinalWidth ,nil ;};func (_ggd *Page )fitsPage (_adda *_fg .PageInformationSegment ,_agba *_ab .Bitmap )bool {return _ggd .countRegions ()==1&&_adda .DefaultPixelValue ==0&&_adda .PageBMWidth ==_agba .Width &&_adda .PageBMHeight ==_agba .Height ;
};func (_eag *Page )GetBitmap ()(_gbbda *_ab .Bitmap ,_gae error ){_a .Log .Trace (_ef .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_eag .PageNumber ));
defer func (){if _gae !=nil {_a .Log .Trace (_ef .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_eag .PageNumber ,_gae ));
}else {_a .Log .Trace (_ef .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_eag .PageNumber ));};}();if _eag .Bitmap !=nil {return _eag .Bitmap ,nil ;
};_gae =_eag .composePageBitmap ();if _gae !=nil {return nil ,_gae ;};return _eag .Bitmap ,nil ;};func (_fgbf *Document )encodeFileHeader (_geb _d .BinaryWriter )(_bfb int ,_ecb error ){const _ccbg ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_bfb ,_ecb =_geb .Write (_fc );if _ecb !=nil {return _bfb ,_b .Wrap (_ecb ,_ccbg ,"\u0069\u0064");};if _ecb =_geb .WriteByte (0x01);_ecb !=nil {return _bfb ,_b .Wrap (_ecb ,_ccbg ,"\u0066\u006c\u0061g\u0073");};_bfb ++;_cgf :=make ([]byte ,4);_e .BigEndian .PutUint32 (_cgf ,_fgbf .NumberOfPages );
_cfe ,_ecb :=_geb .Write (_cgf );if _ecb !=nil {return _cfe ,_b .Wrap (_ecb ,_ccbg ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bfb +=_cfe ;return _bfb ,nil ;};func (_geec *Page )addTextRegionSegment (_ggc []*_fg .Header ,_gcee ,_ccbe map[int ]int ,_cge []int ,_gbf *_ab .Points ,_gca *_ab .Bitmaps ,_dff *_fb .IntSlice ,_egbb *_ab .Boxes ,_gac ,_cgfg int ){_eef :=&_fg .TextRegion {NumberOfSymbols :uint32 (_cgfg )};
_eef .InitEncode (_gcee ,_ccbe ,_cge ,_gbf ,_gca ,_dff ,_egbb ,_geec .FinalWidth ,_geec .FinalHeight ,_gac );_edd :=&_fg .Header {RTSegments :_ggc ,SegmentData :_eef ,PageAssociation :_geec .PageNumber ,Type :_fg .TImmediateTextRegion };_gdcc :=_fg .TPageInformation ;
if _ccbe !=nil {_gdcc =_fg .TSymbolDictionary ;};var _fdab int ;for ;_fdab < len (_geec .Segments );_fdab ++{if _geec .Segments [_fdab ].Type ==_gdcc {_fdab ++;break ;};};_geec .Segments =append (_geec .Segments ,nil );copy (_geec .Segments [_fdab +1:],_geec .Segments [_fdab :]);
_geec .Segments [_fdab ]=_edd ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_ecf *Globals )GetSymbolDictionary ()(*_fg .Header ,error ){const _fafb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _ecf ==nil {return nil ,_b .Error (_fafb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ecf .Segments )==0{return nil ,_b .Error (_fafb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_acf :=range _ecf .Segments {if _acf .Type ==_fg .TSymbolDictionary {return _acf ,nil ;};};return nil ,_b .Error (_fafb ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};type EncodingMethod int ;func (_aae *Page )createNormalPage (_efgd *_fg .PageInformationSegment )error {const _ae ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_aae .Bitmap =_ab .New (_efgd .PageBMWidth ,_efgd .PageBMHeight );
if _efgd .DefaultPixelValue !=0{_aae .Bitmap .SetDefaultPixel ();};for _ ,_cafa :=range _aae .Segments {switch _cafa .Type {case 6,7,22,23,38,39,42,43:_a .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_cafa .SegmentNumber );
_gbbdd ,_gedgf :=_cafa .GetSegmentData ();if _gedgf !=nil {return _gedgf ;};_bfga ,_gge :=_gbbdd .(_fg .Regioner );if !_gge {_a .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_gbbdd );
return _b .Errorf (_ae ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_gbbdd );
};_acd ,_gedgf :=_bfga .GetRegionBitmap ();if _gedgf !=nil {return _b .Wrap (_gedgf ,_ae ,"");};if _aae .fitsPage (_efgd ,_acd ){_aae .Bitmap =_acd ;}else {_dcdb :=_bfga .GetRegionInfo ();_cgd :=_aae .getCombinationOperator (_efgd ,_dcdb .CombinaionOperator );
_gedgf =_ab .Blit (_acd ,_aae .Bitmap ,int (_dcdb .XLocation ),int (_dcdb .YLocation ),_cgd );if _gedgf !=nil {return _b .Wrap (_gedgf ,_ae ,"");};};};};return nil ;};func (_dgc *Page )createPage (_gcg *_fg .PageInformationSegment )error {var _eee error ;
if !_gcg .IsStripe ||_gcg .PageBMHeight !=-1{_eee =_dgc .createNormalPage (_gcg );}else {_eee =_dgc .createStripedPage (_gcg );};return _eee ;};func (_bdd *Document )GetGlobalSegment (i int )(*_fg .Header ,error ){_eeb ,_bb :=_bdd .GlobalSegments .GetSegment (i );
if _bb !=nil {return nil ,_b .Wrap (_bb ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _eeb ,nil ;};func (_cfg *Page )getResolutionX ()(int ,error ){const _faa ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
if _cfg .ResolutionX !=0{return _cfg .ResolutionX ,nil ;};_acg :=_cfg .getPageInformationSegment ();if _acg ==nil {return 0,_b .Error (_faa ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dde ,_gcfc :=_acg .GetSegmentData ();
if _gcfc !=nil {return 0,_b .Wrap (_gcfc ,_faa ,"");};_ffe ,_cgb :=_dde .(*_fg .PageInformationSegment );if !_cgb {return 0,_b .Errorf (_faa ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_dde );
};_cfg .ResolutionX =_ffe .ResolutionX ;return _cfg .ResolutionX ,nil ;};func (_dgce *Page )lastSegmentNumber ()(_dfd uint32 ,_afb error ){const _ead ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_dgce .Segments )==0{return _dfd ,_b .Errorf (_ead ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_dgce .PageNumber );
};return _dgce .Segments [len (_dgce .Segments )-1].SegmentNumber ,nil ;};func (_dbg *Page )AddGenericRegion (bm *_ab .Bitmap ,xloc ,yloc ,template int ,tp _fg .Type ,duplicateLineRemoval bool )error {const _ebf ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
_eae :=&_fg .GenericRegion {};if _bcdd :=_eae .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_bcdd !=nil {return _b .Wrap (_bcdd ,_ebf ,"");};_bcg :=&_fg .Header {Type :_fg .TImmediateGenericRegion ,PageAssociation :_dbg .PageNumber ,SegmentData :_eae };
_dbg .Segments =append (_dbg .Segments ,_bcg );return nil ;};func _fcg (_eeab *Document ,_bcfb int )*Page {return &Page {Document :_eeab ,PageNumber :_bcfb ,Segments :[]*_fg .Header {}};};func DecodeDocument (input *_d .Reader ,globals *Globals )(*Document ,error ){return _cbag (input ,globals );
};