@ -1795,15 +1795,15 @@ ImU32 ImGui::GetColorU32(ImU32 col) 
			
		
	
		
			
				
					//-----------------------------------------------------------------------------
  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					// std::lower_bound but without the bullshit
  
			
		
	
		
			
				
					static  ImVector < Im GuiStorage : : Pair > : : iterator LowerBound ( ImVector < ImGuiStorage : : Pair > &  data ,  ImGuiID  key )  
			
		
	
		
			
				
					static  ImGuiStorage : : Pair * LowerBound ( ImVector < ImGuiStorage : : Pair > &  data ,  ImGuiID  key )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Im GuiStorage : : Pair > : : iterator first  =  data . begin ( ) ;   
			
		
	
		
			
				
					    ImVector < Im GuiStorage : : Pair > : : iterator  last  =  data . end ( ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair * first  =  data . Data ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *  last  =  data . Data  +  data . Size ;   
			
		
	
		
			
				
					    size_t  count  =  ( size_t ) ( last  -  first ) ;   
			
		
	
		
			
				
					    while  ( count  >  0 )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        size_t  count2  =  count  > >  1 ;   
			
		
	
		
			
				
					        ImVector < Im GuiStorage : : Pair > : : iterator mid  =  first  +  count2 ;   
			
		
	
		
			
				
					        ImGuiStorage : : Pair * mid  =  first  +  count2 ;   
			
		
	
		
			
				
					        if  ( mid - > key  <  key )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            first  =  + + mid ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1836,7 +1836,7 @@ void ImGuiStorage::BuildSortByKey() 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					int  ImGuiStorage : : GetInt ( ImGuiID  key ,  int  default_val )  const  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					        return  default_val ;   
			
		
	
		
			
				
					    return  it - > val_i ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1849,7 +1849,7 @@ bool ImGuiStorage::GetBool(ImGuiID key, bool default_val) const 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					float  ImGuiStorage : : GetFloat ( ImGuiID  key ,  float  default_val )  const  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					        return  default_val ;   
			
		
	
		
			
				
					    return  it - > val_f ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1857,7 +1857,7 @@ float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void *  ImGuiStorage : : GetVoidPtr ( ImGuiID  key )  const  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					        return  NULL ;   
			
		
	
		
			
				
					    return  it - > val_p ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1866,7 +1866,7 @@ void* ImGuiStorage::GetVoidPtr(ImGuiID key) const 
			
		
	
		
			
				
					// References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
  
			
		
	
		
			
				
					int *  ImGuiStorage : : GetIntRef ( ImGuiID  key ,  int  default_val )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					        it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;   
			
		
	
		
			
				
					    return  & it - > val_i ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1879,7 +1879,7 @@ bool* ImGuiStorage::GetBoolRef(ImGuiID key, bool default_val) 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					float *  ImGuiStorage : : GetFloatRef ( ImGuiID  key ,  float  default_val )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					        it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;   
			
		
	
		
			
				
					    return  & it - > val_f ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1887,7 +1887,7 @@ float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val) 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void * *  ImGuiStorage : : GetVoidPtrRef ( ImGuiID  key ,  void *  default_val )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					        it  =  Data . insert ( it ,  Pair ( key ,  default_val ) ) ;   
			
		
	
		
			
				
					    return  & it - > val_p ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1896,7 +1896,7 @@ void** ImGuiStorage::GetVoidPtrRef(ImGuiID key, void* default_val) 
			
		
	
		
			
				
					// FIXME-OPT: Need a way to reuse the result of lower_bound when doing GetInt()/SetInt() - not too bad because it only happens on explicit interaction (maximum one a frame)
  
			
		
	
		
			
				
					void  ImGuiStorage : : SetInt ( ImGuiID  key ,  int  val )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        Data . insert ( it ,  Pair ( key ,  val ) ) ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1912,7 +1912,7 @@ void ImGuiStorage::SetBool(ImGuiID key, bool val) 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void  ImGuiStorage : : SetFloat ( ImGuiID  key ,  float  val )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        Data . insert ( it ,  Pair ( key ,  val ) ) ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -1923,7 +1923,7 @@ void ImGuiStorage::SetFloat(ImGuiID key, float val) 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void  ImGuiStorage : : SetVoidPtr ( ImGuiID  key ,  void *  val )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImVector < Pair > : : iterator   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    ImGuiStorage : : Pair *   it  =  LowerBound ( Data ,  key ) ;   
			
		
	
		
			
				
					    if  ( it  = =  Data . end ( )  | |  it - > key  ! =  key )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        Data . insert ( it ,  Pair ( key ,  val ) ) ;